一尘不染

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

mysql

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

它会创建一个文本文件,该文件可用于从命令行还原数据日志。

我认为在还原之前编辑转储将是有用的,这是一种 快速 更改值和表或列名的方法-至少要等到我了解更多并对使用ALTER和UPDATE做到这一点充满信心为止。

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

还有另一种生成转储的方式,可以更好地控制行长吗?

还是应该使用sed或Perl之类的工具对转储进行后处理?


阅读 377

收藏
2020-05-17

共1个答案

一尘不染

默认情况下, 每个表mysqldump仅生成一个INSERT命令,从而为每个转储的
生成一行(很长)的插入数据。这实质上是因为“批”插入比INSERT为每个表中的每个记录生成单独的查询要快得多。

因此,并不是mysqldump创建任意长的行,而是可以加上其他截止长度。排长是有原因的。

如果将INSERTs分解成多行是非常重要的,则可以使用以下命令表明这一点:

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

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

2020-05-17