MySQLDump为每个数据行转储一个INSERT语句

qcbq4gxm  于 2022-12-26  发布在  Mysql
关注(0)|答案(4)|浏览(139)

使用以下语句:

mysqldump --complete-insert --lock-all-tables --no-create-db 
--no-create-info --extended-insert --password=XXX -u XXX 
--dump-date yyy > yyy_dataOnly.sql

我得到了如下INSERT语句:

INSERT INTO `table` VALUES (1,'something'),(2,'anything'),(3,'everything');

在我的情况下,我需要的是这样的东西:

INSERT INTO `table` VALUES (1,'something');
INSERT INTO `table` VALUES (2,'anything');
INSERT INTO `table` VALUES (3,'everything');

有没有办法告诉“mysqldump”为每一行创建一个新的INSERT语句?谢谢你的帮助!

bq3bfh9z

bq3bfh9z1#

Use:

mysqldump --extended-insert=FALSE

请注意,多个插入将比一个大的插入慢。

vktxenjb

vktxenjb2#

在较新版本中,对标志进行了更改:
来自文档:
一个月一次,一个月一次
使用包含多个VALUES列表的多行语法编写INSERT语句。这将生成较小的转储文件,并在重新加载文件时加快插入速度。
--opt
默认情况下启用的此选项是--add-drop-table--add-locks--create-options--disable-keys--extended-insert--lock-tables--quick--set-charset组合的简写。它提供快速转储操作并生成可快速重新加载到MySQL服务器的转储文件。
由于--opt选项在缺省情况下是启用的,因此您只需指定它的匡威选项--skip-opt来关闭几个缺省设置。有关选择性地启用或禁用受--opt影响的选项子集的信息,请参见mysqldump选项组的讨论。
--skip-extended-insert
关闭扩展插入

aurhwmvo

aurhwmvo3#

对于MariaDB,您可以使用

mysqldump -u root -p'secret' --skip-extended-insert dbnamehere > y.sql

MaraiDB加密转储Docs

tzdcorbm

tzdcorbm4#

给那些不想
//导致性能损失。
这可能是工作
//未找到正式解决方案,仅使用sed进行格式化

使用sed

mysqldump ... | sed 's/),(/),\n  (/g'

//第一项前没有换行符。

mysqldump ... | sed -e 's/),(/),\n  (/g' -e 's/VALUES (/VALUES\n  (/g'

//在第一项前添加换行符。

输出

0.原件:

INSERT INTO `role_permission` VALUES (1328,106,1),(1329,171,1),(1330,144,1),(1331,147,1),(1333,157,1),(1334,88,1);

1.变为:

一个三个三个一个
http://blog.lavoie.sl/2014/06/split-mysqldump-extended-inserts.html
https://stackoverflow.com/q/15750535#answer-19961480 Solution came from here, I didn't do fully test

相关问题