我想将一个非常大的SQL文件导入MySql(30GB)。
我试过bigdump.php(外键有些错误)脚本和简单的导入。之后我尝试通过命令行执行此操作:
(mysql -u username -p database_name < file.sql)
2小时后,我有一个9 GB的数据库。然后又过了10个小时,我有一个10.1 GB的数据库。
现在看来这个过程正在运行,但速度很慢(每小时200000行/ 100MB)。
如何解决此问题? 谢谢
答案 0 :(得分:1)
这很可能是由于MySQL需要检查每一行的关键约束。但是,由于您(希望)已经知道该文件不包含约束违规,您可能希望关闭一些检查。 MySQL有一个关于Bulk Data Loading for InnoDB Tables和Speed of INSERT Statements的手册页。
您通常要做的是将这些命令添加到.sql文件的顶部:
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
这些到底:
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;
您可以在MySQL CLI中执行此操作,而无需直接编辑.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在使用包含外键的转储时效果不会很好。
答案 1 :(得分:0)
尝试压缩数据库,然后通过命令行上传。