mysql - 如何处理 mysqldump 创建的巨大行长

我在 cron 作业中使用 mysqldump 来备份超过 200 万行的数据库。

它创建一个文本文件,可用于从命令行恢复数据记录。

我认为在还原之前编辑转储作为一种更改值和表或列名称的快速方式会很有用 - 至少在我了解更多并有信心使用 ALTER 完成之前和更新。

编辑大文本文件并不困扰我,但我惊讶地发现在我的数据库的 250 兆字节转储中,只有大约 300 行。每行大约有 80 万个字符长。

是否有另一种生成转储的方法可以更好地控制行长?

或者我应该使用 sed 或 Perl 等工具对转储进行后处理?

最佳答案

默认情况下,mysqldump每个表只生成一个INSERT命令,导致每个表插入一行(很长)行那被甩了。这本质上是因为“批量”插入比为每个表中的每条记录生成单独的 INSERT 查询要快得多。

所以,并不是 mysqldump 创建了任意长的行,你可以强加一些其他的截止长度。排长队是有原因的。

如果将 INSERT 分解为多行真的很重要,您可以使用:

mysqldump --extended-insert=FALSE --complete-insert=TRUE ...

但是请注意,以这种格式恢复表会花费更长的时间。

https://stackoverflow.com/questions/1293529/

相关文章:

java - 在 Java 中处理 MySQL 日期时间和时间戳

mysql - 获取不带表格格式的SQL查询结果

mysql - 如何重新排列 MySQL 列?

mysql - 如何在 phpMyAdmin 中显示 UTF-8 字符?

mysql - 删除匹配行的更快方法?

mysql - SQL:在 MySQL 中将现有列设置为主键

mysql - 如何更改超过 1 列的表列数据类型?

mysql - 如何在 Mysql Workbench GUI 中查看表格内容?

mysql - 我们如何区分 LEFT OUTER JOIN 与 Left Join

mysql - 将表从 Amazon RDS 导出到 CSV 文件