一直以来我都是做一些企业站,没什么大数据,很多知识点也欠缺,够用就行……直到前几天需要处理近百万条数据(80+w),从本地导出正常,到了服务器端,导入就遇到麻烦了:
第一次直接用Navicat for mysql进行的,忘了具体开始时间,但第二天早晨我看的时候才导入70%……
于是开始查资料,找方法……试了很多,发现一个显快的:
#cmd登入mysql SET GLOBAL foreign_key_checks=0; SET GLOBAL unique_checks=0; SET GLOBAL innodb_flush_log_at_trx_commit=0; SET GLOBAL sync_binlog=0; use 表; set names utf8; source e:/xxx.sql; #执行完毕后恢复设置 SET GLOBAL foreign_key_checks=1; SET GLOBAL unique_checks=1; SET GLOBAL innodb_flush_log_at_trx_commit=1; SET GLOBAL sync_binlog=1; #比Navicat或直接source快很多
比Navicat导入要快一些,但还是很慢的,半小时导入了差不多10万条……反正不急,继续找方法,重新导入。于是找到了这个,还不错:
1、修改my.ini加入secure_file_priv='';后重启mysql
2、导出数据到txt:select * from gk_jzs ORDER BY id asc into outfile 'E:/jzs.txt';
3、先在目标数据库建立相同表结构的数据表,导入数据LOAD DATA LOCAL INFILE 'E:/jzs.txt' INTO TABLE gk_jz;
非常快,百万条数据的导入只需十几秒。
遗憾的是,在创建表结构的时候最好不要建立索引,尤其是全文索引,否则还是很慢的。导入完成之后再重新建立索引,百万条的全文索引创建还是很慢的……总之,还是慢,不知道怎么才能更快一点,是否把那个数据表文件复制过去可行吗?
© 致远 2022-11-21,原创内容,转载请注明出错:mysql百万数据导入导出