【问题标题】:mysqldump and separating INSERT'smysqldump 和分离 INSERT 的
【发布时间】:2026-02-05 23:45:01
【问题描述】:

当我运行以下 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);

这可能吗?

【问题讨论】:

  • 为什么很难?单个INSERT 语句比许多单独的语句更好!
  • 你的意思是这样的? *.com/questions/12439353/…
  • 你也可以拆分压缩文件,上传,在服务器上解压,然后通过socket导入=>不超时

标签: mysqldump


【解决方案1】:

你可以通过:

mysqldump -uUSER --skip-extended-insert -p DATABASE | gzip > dump.sql.gz

USER 是您的用户,DATABASE 是您的数据库。

但是 - 真的,为什么要这样做?多次插入在性能方面更好。

另外,提示:如果您正在输入此命令(即它不是某些脚本的一部分) - 不要提供密码,因为它将保存在历史记录中(默认情况下) - 这可能是不安全的(在上面的示例中-standing -p 选项表示交互式密码提示)

【讨论】:

  • 这就是我想要的。假设我有点菜鸟,并且正在使用此脚本导入我的数据库而不会超时ozerov.de/bigdump。目前,我不知道拆分 sql 文件、使用套接字上传等所有花哨的方面。这只是我完成所需工作的一种快速方法,直到我可以了解有关大型数据库的更多信息 :) 感谢您的帮助!