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へ移行しようかと思います。

Tags: Ruby