【发布时间】:2013-03-22 22:42:16
【问题描述】:
这已被问过几次,但我找不到解决问题的方法。基本上,当使用 MySQL Workbench 管理工具的内置工具 mysqldump 时,当我使用扩展插入转储数据库时,我会得到大量长行数据。我理解它为什么这样做,因为它通过将数据作为一个命令插入(尤其是在 InnoDB 上)来加快插入速度,但是格式化使得实际上很难查看转储文件中的数据,或者使用差异工具比较两个文件如果您将它们存储在版本控制等中。在我的情况下,我将它们存储在版本控制中,因为我们使用转储文件来跟踪我们的集成测试数据库。
现在我知道我可以关闭扩展插入,所以我会得到每行一个插入,这是可行的,但任何时候你使用转储文件进行恢复都会变慢。
我的核心问题是,在我转储文件时我们使用的 OLD 工具(MySQL 管理员)中,它的作用基本相同,但它格式化 INSERT 语句以每行插入一个,同时仍然进行批量插入.所以不要这样:
INSERT INTO `coupon_gv_customer` (`customer_id`,`amount`) VALUES (887,'0.0000'),191607,'1.0300');
你明白了:
INSERT INTO `coupon_gv_customer` (`customer_id`,`amount`) VALUES
(887,'0.0000'),
(191607,'1.0300');
无论我尝试什么选项,似乎都无法获得这样的转储,这确实是两全其美。是的,它会占用更多空间,但在需要人工阅读文件的情况下,它会更加有用。
我是否遗漏了什么,有一种方法可以使用 MySQLDump 执行此操作,还是我们都倒退了,旧的(现已弃用)MySQL Administrator 工具中的此功能不再可用?
【问题讨论】:
-
这是
mysqldump中的一个已知缺点。是first reported in 2004。在 2011 年,Tim Riker 和 Lon Binder 都建议使用 1 行补丁来修复它。令人难以置信的是,mysqldump开发人员/维护人员尚未实现此仍然。由于最初的错误报告已关闭(错误且无济于事),因此现在正在跟踪该问题here。
标签: mysql mysqldump mysql-workbench mysqladministrator