如何在导入MySQL转储文件时覆盖ENGINE=INNODB参数?

9

我有一个很大的转储文件(数十GB),我想将其导入到一个新表中,但不需要遵守ENGINE=INNODB参数。

我尝试了几个专门用于编辑大文件的编辑器来编辑转储文件,但总是需要很长时间保存修改,所以最好的方法就是忽略ENGINE=INNODB参数并覆盖它(例如使用默认引擎)。

导入后再更改引擎不是一个选项,因为InnoDB非常慢,会花费数天时间来导入转储文件。

2个回答

10

mysqldump --compatible=no_table_options

这对我起到了作用。


6
如果你正在使用Linux/Unix系统,可以考虑使用sed进行现场编辑。
sed -i 's/ENGINE=INNODB/ENGINE=MYISAM/g' filename

3
值得一提的是,如果数据库中某些数据实际上包含文本ENGINE=INNODB,那么这个命令会破坏数据。 - Asaph
3
使用 sed -i -re 's/^(\) ENGINE=)INNODB/\1MyISAM/gi' 命令,这应该是安全的,因为实际数据中不应该有未编码的换行符。 - Stefan Seidel
非常帮助,帮了很多忙。谢谢 :) - Hoja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接