当前位置:首页 » 数据仓库 » shell批量导入数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shell批量导入数据库

发布时间: 2022-05-31 17:11:14

⑴ 用shell命令解决XAMPP数据库导入文件限制

经常折腾
WordPress
的朋友通常都会搭建一个本地环境,调试修改完了再发布到线上,至于如何在本地安装
WordPress,这个可以参考我之前写的一篇《轻松10步本地安装WordPress(图)》文章,这篇文章中推荐使用
XAMPP
这个集
Apache
+
Mysql
+
PHP
于一身的套装软件,今天的话题同样也是围绕
XAMPP。
为了真实还原线上环境,我们会把线上的数据库备份下来,用
XAMPP

phpMyAdmin
导入到本地,当然,如果数据量不大是一切正常的,但如果终于有一天,你的数据量积累到一定的程度,XAMPP

phpMyAdmin
就会有文件大小限制、上传超时等各种问题,有一种解决办法是修改配置文件,但是我今天要推荐的是另一种方法
——
shell
命令,更加快速、直接、有效地导入数据库,可以从根本上避免文件大小限制、上传超时等问题。步骤如下:
第一,打开
CMD。开始
->
运行
->
CMD。
第二,进入
mysql
目录。
d:
cd
d:xamppmysqlbin
第三,启动
mysql,输入用户名及密码。
mysql
-u
wper
-p
Enter
password:
*******
第四,选择对应的数据库名。
mysql>
use
wp
第五,设置
utf8
编码。
mysql>
set
names
utf8;
第六,选择
sql
数据库文件路径并导入。
mysql>source
d:wangeim.sql
以上步骤详请对应如下图:
有图有文有解说,是不是很简单呢?try

try
吧,你也可以的。
文章来源:wange.im

⑵ shell 怎么造mysql 的大量数据

若要将大量的数据值插入到数据库的一个或多个表中,使用insert into语句来实现将是一项无聊的工作。
1、LOAD DATA通过读取本地文件系统上的文件,可以将大量数据添加到数据库中。
mysql> LOAD DATA INFILE ‘datafile.txt’ INTO TABLE db2.table_name;
mysql> LOAD DATA INFILE ‘datafile.txt’ INTO TABLE db2.table_name FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”‘;
mysql> load data infile “file.txt” into table table_name fields terminated by ‘\t’ (sid,name);
2、还有一个mysqlimport命令可以批量增加,mysqlimport直接从文件读取批量数据。它相当于LOAD DATA语句的一个接口。
mysqlimport可以自动生成一个LOAD DATA语句,该语句把filename.txt文件中的数据装入table_name表中。
mysqlimport根据文件名导入表名,即将文件名第一个圆点前的所有字符作为表名。例如,文件class.txt被装入class表中。
例如:
mysqlimport -L -uroot -proot db01 table_name.txt;
mysqlimport -local table_name filename.txt;
3、datafile.txt内容:
“1”,”a string”,”100.20″
“2”,”a string containing a , comma”,”102.20″
“3”,”a string containing a \” quote”,”102.20″
“4”,”a string containing a \”, quote and comma”,”102.20″
4、假如你有x表,导入了一个y表,将y表数据插入x表:
insert into x select * from y;

⑶ 怎么向redis导入大量数据

具体实现步骤如下:1.新建一个文本文件,包含redis命令如果有了原始数据,其实构造这个文件并不难,譬如shell,python都可以2.将这些命令转化成RedisProtocol。因为Redis管道功能支持的是RedisProtocol,而不是直接的Redis命令。如何转化,可参考后面的脚本。3.利用管道插入catdata.txt|redis-cli--pipeShellVSRedispipe下面通过测试来具体看看Shell批量导入和Redispipe之间的效率。测试思路:分别通过shell脚本和Redispipe向数据库中插入10万相同数据,查看各自所花费的时间。Shell脚本如下:#!/bin/bashfor((i=0;i>redis.logdone每次插入的值都是helloworld,但键不同,name0,name1name99999。RedispipeRedispipe会稍微麻烦一点1>首先构造redis命令的文本文件在这里,我选用了python#!/usr/bin/pythonforiinrange(100000):print'setname'+str(i),'helloworld'#python1.py>redis_commands.txt#head-2redis_commands.>将这些命令转化成RedisProtocol在这里,我利用了github上一个shell脚本,#!/bin/bashwhilereadCMD;do#eachcommandbeginswith*{numberargumentsincommand}\r\nXS=($CMD);printf"*${#XS[@]}\r\n"#foreachargument,weappend${length}\r\n{argument}\r\nforXin$CMD;doprintf"\$${#X}\r\n$X\r\n";donedoneredis_data.txt#head-7redis_data.txt*3$3set$5name0$10helloworld至此,数据构造完毕。测试结果

⑷ shell往mysql数据库导入新

本文介绍 MySQL 8.0 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法。


其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信。MySQL 一直以来提供导入文件 SQL 命令 load data infile(单线程)以及对应的可执行文件 mysqlimport(多线程)。


比如我导入 100W 行示例数据到表 ytt.tl1,花了 24 秒。这个已经是 MySQL 默认导入来的最快的。分析那我们现在看下 mysqlimport 工具的升级版,mysqlshell 的 util 工具集。


使用这两个工具之前,必须得临时开启 local_infile 选项。1. import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytt.tl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少。


我们上面指定了显式指定了字段分隔符,那有没有已经定义好的组合格式呢? 答案是有的,选项 dialect 可以指定以下格式:csv,tsv,json,csv-unix那么上面的导入,我们可以更简单,改下变量 y_options1 的定义导入时间差不多。这里要说明下,dialect 选项的优先级比较低,比如添加了'linesTerminatedBy':' ', 则覆盖他自己的' '。


选项 diaelect 还有一个可选值为 json,可以直接把 json 结果导入到文档表里。比如我新建一张表 tl1_json重新定义文件以及导入选项。导入 JSON 数据速度也还可以,不到 24 秒。那导入 json 数据,就必须得提到以 X 插件协议通信的工具 import_json了。2. imort_json我们切换到 mysqlx 端口import_json 参数和 Import_table 参数类似,这里我改下选项我在手册上没有看到多线程的选项,所以单线程跑 35 秒慢了些。查看刚刚导入的数据import_json 不仅仅可以导入 Json 数据,更重要的是可以在 BSON 和 JSON 之间平滑的转换,有兴趣的同学可以去 TRY 下。


⑸ 如何用shell脚本将在mysql数据库中得到的数据导入到oracle数据库中

有一个工具是mysql到oracle做数据迁移的叫Convert Mysql to Oracle 你可以试试,不知道合不合适。
非要弄shell的话,那可真是麻烦可以选择让程序员写个小程序转换sql的让后用shell调用。
真自己写shell。。。那就折腾导出来的 create、insert语句吧。想想都头大。是在没必要完全用shell弄。

⑹ 怎样把txt 文件通过shell 导入到mysql数据表

方法是:、
1。 通过操作系统命令 windows的dir 或者 linux ls 行命令,把所有文件名列出,并复制到excel 中。
2。 利用EXCEL的公式生成 insert into table1 (pathName,fileCOntent) value ('/temp/txt/filename1.txt',LOAD_FILE('/temp/txt/filename1.txt'));
3。 把这些命令直接贴到mysql行命令运行。

⑺ 关于shell脚本导入数据的问题

-h 是远程连接访问mysql 127.0.0.1 是本机ip
写入shell可以这样 :

mysql -u你的用户名 -p密码 <<END
mysql命令.....
exit;
END
/home/zyxf/BinaryConverter/BinaryConverter -af -h127.0.0.1 -uroot -w123456 -d${db}
不清楚是什么 看表面意思像是将数据库转换成二进制保存的意思。 -af 这些应该是BinaryConverter 这个命令的参数你可以尝试man BinaryConverter来查看他。

⑻ redis shell 导入到指定的数据库

1、导出redis

[plain]view plain

  • #!/bin/bash

  • REDIS_HOST=localhost

  • REDIS_PORT=6379

  • REDIS_DB=1

  • KEYNAME=redis:hash:*

  • KEYFILE=key.txt

  • echo"KEYS$KEYNAME"|redis-cli-h$REDIS_HOST-p$REDIS_PORT-n$REDIS_DB>$KEYFILE

  • OUTFILE=valuelist.txt

  • TEMPFILE=$OUTFILE.tmp

  • echo>$TEMPFILE

  • forkeyin`cat$KEYFILE`

  • do

  • echo$key

  • #echo"HGETALL$key"|redis-cli-h$REDIS_HOST-p$REDIS_PORT-n$REDIS_DB>>$TEMPFILE

  • echo"GET$key"|redis-cli-h$REDIS_HOST-p$REDIS_PORT-n$REDIS_DB>>$TEMPFILE

  • done

  • 2、整理导出的结果
  • [plain]view plain

  • cat$TEMPFILE|xargs-n2|awk-F""-vKEYNAME=$KEYNAME'{print"HSET"KEYNAME""$1,"""$2"""}'>$OUTFILE

  • 其中的xargs -n 2是把2行合成一行,换行符用空格代替
  • 然后用awk按空格分开,$1是keynam $2是key的值

    再次转换成HSET的格式,其中用到KEYNAME变量,这个要用-v预先定义。

    最后转化为 HSET KEYNAME KEY "VALUE"格式。

    3、导入转换的结果

    [plain]view plain

  • cat$OUTFILE|redis-cli-hlocalhost-p6379


  • 二、直接用Redis的Dump和Restore导出和导入

    [plain]view plain

  • redis-cli--rawmptest|head-c-1|redis-cli-xrestoretest10

⑼ linux 下如何使用shell 把处理好的csv文件导入到数据库下

linux 下,可以使用cli程序把csv文件导入到数据库。具体代码如下:


$ORACLE_HOME/bin/sqlplus-Susername/password@instanceName>/dev/null2>&1<<!!
#对sqlplus作一些设置,使之只输出我们需要的文本
setechooff
setpagesize0
setverifyoff
setfeedbackoff
settermoutoff
setlinesize3000
settrimspoolon
#查询输出到临时文件
spool/tmp/some_tmp.csv
#select语句
selectcolumn1||','||column2||','||column3....
fromsome_tablewherecondition
spooloff
#这里可以添加多个查询,且每个查询可输出到不同的文件,如下面注释
#spool/tmp/some_tmp.csv
#selectcolumn1||','||column2||','||column3....
#fromsome_tablewherecondition
#spooloff
setmarkupHTMLoff
quit
!!
#计算记录总行数,如果是0则不发邮件
NUM=`cat/tmp/some_tmp.csv|wc-l`
if[$NUM-gt0]
then
#先写excel的每列的title
echo'Title_Of_Column1,Title_Of_Column2,....Title_Of_ColumnN'>/tmp/attachement.csv
#数据正文
cat/tmp/some_tmp.csv>>/tmp/attachement.csv
#发邮件
(
echo"From:[email protected]"
echo"To:[email protected]"
echo"MIME-Version:1.0"
echo"Content-Type:multipart/mixed;"
echo'boundary="A_Boundary_Name_You_Can_Change_It"'
echo"Subject:Subject"
echo""
echo""
#附件分隔符,上面的boundary前面加--
echo"--A_Boundary_Name_You_Can_Change_It"
echo'Content-Transfer-Encoding:x-uuencode'
echo'Content-Type:text/csv;'
echo'name="attachement.csv"'
echo'Content-Disposition:attachment;'
echo'filename="attachement.csv"'
echo""
uuencode/tmp/attachement.csvattachement.csv
echo"--A_Boundary_Name_You_Can_Change_It"
#附件结束
)|mailx-t
fi
#删除临时文件
rm-f/tmp/*.csv
exit0

⑽ 用shell怎么把数据文件每个字段定长导入数据库

shell的字符串截取法。假设定长5个字符。

var=abcdefg
echo${var:0:5}#截取前5个字符

格式是这样的:

${字符串:起始位置:截取长度}

其中,起始位置从0开始