当我运行以下 mysqldump 命令时,它将 INSERT 分组在一起。
mysqldump --user=username --password=password --host=localhost database | gzip > /parth/to/folder/backup.sql.gz
例如:
INSERT INTO tbl_name VALUES (1,2,3), (4,5,6), (7,8,9)
这对于节省空间很有帮助,但让我很难导入 3GB 的 sql 文件。我有一个脚本可以分部分上传一个大的 SQL 文件。它会分解线路,以便服务器/页面不会超时。
我更喜欢的是这样的:
INSERT INTO tbl_name VALUES (1,2,3);
INSERT INTO tbl_name VALUES (4,5,6);
INSERT INTO tbl_name VALUES (7,8,9);
这可能吗?
最佳答案
您可以通过以下方式完成:
mysqldump -uUSER --skip-extended-insert -p DATABASE | gzip > dump.sql.gz
其中 USER
是您的用户,DATABASE
是您的数据库。
但是 - 真的,为什么要这么做?多次插入在性能方面更好。
另外,提示:如果您输入此命令(即它不是某些脚本的一部分) - 不要提供密码,因为它将保存在历史记录中(默认情况下) - 这可能不安全(在上面的示例中单个-stand -p
选项表示交互式密码提示)
关于mysqldump 和分离 INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18472593/