如何将 MyISAM .sql 转储转换为 InnoDB?

如何将 MyISAM .sql 转储转换为 InnoDB?

我可以将转储的 .sql MyISAM 数据库转换为 InnoDB 引擎,然后再将其导入到我的 MySQL 服务器吗?不幸的是,导入当前的 .sql 文件需要很长时间才能完成。

答案1

您可以使用sed来搜索engine myisam并替换它engine innodb

sed -e 's/engine myisam/engine innodb/g' file.sql > file_innodb.sql

答案2

如果您确实想在导入之前更改引擎,则查找/替换是唯一的方法。不确定将 MyISAM 更改为 InnoDB 是否可以加快导入速度,但请考虑以下几点:

如果您有大量转储,请不要使用 phpMyAdmin 进行导入。使用 phpMyAdmin 时,我们会施加 php 限制,例如最大执行时间,导入可能会失败。使用命令行(Windows 中的 CMD 或 Linux 上的终端)登录 mysql,然后导入转储。这种方法效果很好,我曾导入过 2.5GB 的文件,没有任何问题。

导入速度也取决于转储本身。如果转储是使用每条记录 1 条插入语句创建的,那么速度会很慢。在导出期间选择“在每个 INSERT 语句中插入多行”,然后导入速度会快得多

相关内容