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

Erw*_*yer 8 mysql database import innodb mysqldump

我有一个很大的转储(几十GB),我想将它导入一个新表而不考虑ENGINE = INNODB参数.

我试了几个编辑器专用于大型文件编辑转储,但它总是需要花费大量的时间去保存修改,所以它将使更多的意义,只是忽略ENGINE = INNODB参数使用默认引擎覆盖它(例如).

导入然后更改引擎将不是一个选项,因为InnoDB导入转储的速度非常慢,因此需要数天时间.

小智 7

mysqldump --compatible=no_table_options

为我工作


Adr*_*ish 5

如果您使用的是linux/unix系统,请使用sed进行就地编辑

sed -i 's/ENGINE=INNODB/ENGINE=MYISAM/g' filename
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,在极少数情况下,数据库中的某些数据实际上包含文本"ENGINE = INNODB",此命令会破坏数据. (3认同)
  • 使用`sed -i -re'/ ^(\)ENGINE =)INNODB /\1MyISAM/gi'`,它应该是安全的,因为实际数据中不应该有未编码的换行符. (3认同)