我在cron作业中使用mysqldump备份了超过200万行的数据库。
它会创建一个文本文件,该文件可用于从命令行还原数据日志。
我认为在还原之前编辑转储将是有用的,这是一种 快速 更改值和表或列名的方法-至少要等到我了解更多并对使用ALTER和UPDATE做到这一点充满信心为止。
编辑大型文本文件不会打扰我,但是我惊讶地发现,在数据库的 250兆字节 转储中, 只有大约300行 。每行的长度约为80万个字符。
还有另一种生成转储的方式,可以更好地控制行长吗?
还是应该使用sed或Perl之类的工具对转储进行后处理?
默认情况下, 每个表mysqldump仅生成一个INSERT命令,从而为每个转储的 表 生成一行(很长)的插入数据。这实质上是因为“批”插入比INSERT为每个表中的每个记录生成单独的查询要快得多。
mysqldump
INSERT
因此,并不是mysqldump创建任意长的行,而是可以加上其他截止长度。排长是有原因的。
如果将INSERTs分解成多行是非常重要的,则可以使用以下命令表明这一点:
mysqldump --extended-insert=FALSE --complete-insert=TRUE ...
但是请注意,以这种格式恢复表将花费更长的时间。