想通过 sql 命令导入一个近 10G 的 sql 文件,用 source 命令感觉太慢,有没有好的办法
用 sed 做正则替换,减少 insert into 出现的次数。
sed
insert into
不过建议不折腾,下班前输下命令,第二天早上无论如何都 OK 了,10 G 又没多大
#1 楼 @peter
可以用 sed 做更简单的 INSERT INTO -> INSERT DELAYED INTO
INSERT INTO
INSERT DELAYED INTO
另外,还有下面的方法可以加快大数据批量导入速度:
binlog
innodb_flush_log_at_trx_commit
0
导入完成后再将上面的改回来即可
#2 楼 @leopku 感谢
#1 楼 @peter 嗯嗯,后来我也是这么干的
#2 楼 @leopku 赞!我一般会记得彬索引,其它的没注意过,我的数据也没大到楼主那个程度
10G 并不大,直接 mysql < x.sql 导入即可。
mysql < x.sql
#6 楼 @msg7086 跟很多因素相关,而不仅仅是 dump 文件的大小 我遇到过 4、5G 大小的 dump 文件 8 小时没导完的 下班前果断 CTRL+C 并使用 extended inserts 模式重新导出再导入,下班到家登到服务器上一看已然导完。
CTRL+C
extended inserts
对于正常的备份、数据迁移之类的,大家可以尝试打开 extended inserts 选项,操作简单恢复时却能节省非常多的时间
也找了各种资料总的来说还是用 source 命令来导入 sql 文件比较靠谱!感谢大家的参与😊
#7 楼 @leopku 是这样。 用合适的导出工具很重要。 mysqldump导出的文件就很漂亮。 (当然要比较新的版本,别说是 4.x 的就行)
mysqldump
我那破服务器,导入不到 4 个 G 的 sql 文件,居然用了 1 个多小时,我也是醉了