我想导入一个非常大的SQL文件到MySql (30GB)。
我已经尝试了bigdump.php(外键错误)脚本和简单的导入。之后,我尝试通过命令行来完成:
(mysql -u username -p database_name < file.sql)
2小时后,我有一个9gb的db。再过10个小时,我就有了一个10.1 GB的数据库。
进程似乎正在运行,但是非常慢(200000行/100MB/小时)。
如何解决这个问题?谢谢你
这很可能是由于MySQL需要检查每一行的键约束。但是,既然您(希望)已经知道该文件不包含违反约束的内容,那么您可能希望关闭一些检查。MySQL有一个关于InnoDB表的批量数据加载和INSERT语句速度的手册页。
你通常想做的是将这些命令添加到.sql文件的顶部:SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
和这些到底部:
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;
您可以在MySQL命令行中执行此操作,而无需直接编辑.sql文件:
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
SOURCE yourbigfile.sql;
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;
注意,这个在bigdump.php中不起作用,因为该脚本不会记住每个块之间的这些设置。我不认为bigdump.php会很好地处理包含外键的转储。
尝试压缩db然后通过命令行上传。