mysqldump 和分离 INSERT

标签 mysql

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

相关文章:

php - MySQL 将 DateTime(存储一个 UTC_TIMESTAMP)转换为秒数 1970

mysql - INSERT INTO...SELECT - 主键冲突 - 错误 #1062

php - 如何清除 15 分钟或更早的 MySQL 记录?

php - 如何使自增列不自增?

java - 如何将时间戳转换为几天前

mysql - Rails 生产中的 "Connecting to database specified by database.yml"

mysql - Amazon RDS 支持什么版本的 MySQL

MySQL每用户表还是通用表?

mysql - 使用主键和 2 个外键创建表时出现错误

python - 类型错误 : 'int' object is not iterable in python