web-dev-qa-db-ja.com

MyISAM .sqlダンプをInnoDBに変換する方法は?

ダンプされた.sqlMyISAMデータベースをMySQLサーバーにインポートする前にInnoDBエンジンに変換できますか?残念ながら、現在の.sqlファイルのインポートは完了するまでに時間がかかります。

3
Jakub Pastuszuk

sedを使用してengine myisamを検索し、それをengine innodbに置き換えることができます。

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

インポートする前に本当にエンジンを変更したい場合は、検索/交換が唯一の方法です。 MyISAMをInnoDBに変更することでインポートを高速化できるかどうかはわかりませんが、いくつかの点を考慮してください。

大きなダンプがある場合は、インポートにphpMyAdminを使用しないでください。 phpMyAdminでは、最大実行時間などのphp制限を課し、インポートが失敗する可能性があります。コマンドライン(Windowsの場合はCMD、Linuxの場合はターミナル)を使用してmysqlにログインし、ダンプをインポートします。これはかなりうまく機能します。2.5GBのファイルを問題なくインポートしました。

インポートの速度は、ダンプ自体にも依存します。レコードごとに1つの挿入ステートメントを使用してダンプが作成された場合、その方法は遅くなります。エクスポート中に「すべてのINSERTステートメントに複数の行を挿入する」を選択すると、インポートがはるかに高速になります

2
Sudhir