时间:2021-07-01 10:21:17 帮助过:17人阅读
mysqldump -h 192.168.65.66 -u root -p cadserverdb ta_user_info > C:\Users\lizy-i\Desktop\ta_user_info.sql
其中cadserverdb是数据库名称,ta_user_info是表名。也可以加入条件,只导出部分表数据,如
mysqldump -h 192.168.65.66 -u root -p cadserverdb ta_user_info --where="id<10000" > C:\Users\lizy-i\Desktop\ta_user_info.sql
mysqldump导出的内容是sql语句,既包括表结构(即建表语句),也包括表数据(即insert指令);可以使用-d或-t指定只导出表结构或表中数据。由于这种方法先建表再插入,因此如果是分区表,则数据可以进入正确的分区。
测试:1万条3列的数据,用了8秒钟左右导入
方法5:select与load(非官方文档的方法,测试可用;可能不限于Innodb表)
这种方法与mysqldump的区别在于,首先它只导出表中数据,不导出表结构;其次它导出的是文本数据本身,而不是sql命令。
在cmd下执行如下代码(没有使用into outfile,效果一样),可以将数据存入文本中
mysql -u root -p sample -e "select * from ta_user_info" > C:\Users\lizy-i\Desktop\ta_user_info.txt
在cmd或mysql中执行以下代码,可以将文件中的数据导入数据库(注意local不可以省略否则报错:permission denied)
mysql -h localhost -u root -p sample -e "load data local infile ‘C:/Users/lizy-i/Desktop/ta_user_info.txt‘ into table ta_user_info2"
经测试,导入的数据能够进入正确的分区。
测试:1万条3列的数据,用了6秒钟左右导入
【注意,关于速度的测试数据,并没有精确测量,也没有多次测量取平均值】
注意,Navicat提供了导出和导入功能,既可以是sql形式,也可以是txt形式。对比后发现,导入速度相对更慢一些;而且,txt的导入比sql的导入快很多,可能差个几十倍都不止。
下面比较一下Navicat导出导入txt和上述select/load导入导出txt的速度对比。
表如下:ta_device_cad_ios有150万行数据;ta_device_cad_andr有641万行数据。导出是在正式服务器上进行,性能较好,导入是在测试服务器上进行,性能相对较弱,因此对于同一个表格,导入和导出的速度对比并不公平,重点关注两种方式的速度对比。
对于ios数据,Navicat导出耗时43s,导入耗时1079s;select/load导出耗时16s,导入耗时30s。后者速度快很多很多。
对于andr数据,Navicat每次导出的数据大小不同,耗时不同,行数不同,而且数据显示是16进制形式;导入时Navicat崩溃。个人猜测是表格太大,Navicat导出时进行了编码;在导入时要解码需要一次将所有数据读入,导致内存不足。
而是用select/load方式,导出耗时43s,导入耗时128s。
综上所述,使用select/load方式导数据,比Navicat自带的导出/导入向导,性能强很多。
MySQL6-数据库维护
标签:停止 restore 结构 txt exp 活动 ble 方法 注意