2006-10-19 (Thu) [長年日記]
▲ sqlite2mysql.rb
もうあるかもですが、必要に迫られてSQLite3でダンプしたデータをMySQLへインポート可能な形式に変換するスクリプトを作った。
てきとーパーズなので予想外の位置に改行きたりすると弱いかも。いまのとこ動いてる。やってることは、
- transactionの削除
- sqlite固有のデータの削除
- create tableの削除
- insertのテーブル名のクォートを削除
- insertでカラム名を省略するとSQLiteとMySQLでカラムの順番が一致せず失敗するのでcreate table行からカラム名を抽出してinsertへつける
- SQLiteのbooleanをtinyint(t=1, f=0)へ変換
ぐらいかな。
create table行を削除しているので、単純にデータのinsertだけのファイルを出力する。テーブルは予め
$ rake migrate
で作成しておく。
実行はこんな感じ。
$ sqlite3 database .dump > sqlite.dump $ ./sqlite2mysql.rb sqlite.dump > mysql.dump $ mysql --default-character-set=utf8 -u root -p database < mysql.dump
sqlite3を使っていた小槌ですが、ユーザー数も増えてきたので、パフォーマンスやメンテナンス性からMySQLへ移行しようかと思います。