SQLiteからMySQLへのDBの形式変換は難しい
タスク管理サービスのKanboardを,当初はDBにSQLiteを採用して運用していた。しかし,タスク数が増えるに連れて動作が重くなってきたため,MySQLにDBを変更することにした。
SQLは標準化されており,ダンプ時に生成されるSQLを読み込むだけだから,特に問題なくできるだろうと思っていた。しかし,これが思いの外難しかった。
SQLiteのデータのダンプは以下のコマンドで行った。
sqlite3 -batch db.sqlite .dump >dump.sql
SQLiteのダンプ自体はできたのだが,このダンプデータにはSQLite特有の構文が含まれており,MySQLのSQLとの構文の違いにより,そのまま読み込めなかった。
この件については「sqlite – Quick easy way to migrate SQLite3 to MySQL? – Stack Overflow」で議論されている。順番に試していったが,どれもMySQLへのインポート時にエラーが出てしまい,うまくいかなかった。
特に,MySQL Workbenchでの方法は期待していたのだが,やはりダメだった。しかたなく,外部サービスも検討した。
こちらの「Convert / Sync from SQLite to MySQL」は失敗したが,「Database conversion – RebaseData」はサンプルデータが取り込めた。そのため,有料になるがRebaseDataに約2000円のお金を払って変換できた。
RebaseDataを使うことで実際にエラーなくMySQL 5.7.3に取り込めた。しかし,こちらの変換でもKanboard特有の都合で不十分なところがダメだった。
結局「KanboardのDBのSQLiteからMySQLへの変更」に記した通り,Kanboardのissueを漁って,有志が作成した変換スクリプト経由で取り込むことで解決した。
DBの形式変換なんて,一見すると簡単に思える作業ですら難しくて,非常に煩わしく感じてしまった。
“SQLiteからMySQLへのDBの形式変換は難しい” に対して1件のコメントがあります。