MySQLからPostgresqlに移行するためのPHPコード

herokuはMySQLをサポートしてないので、MySQLを使っている既存アプリをPostgresqlに移行してみた。
まぁheroku使いたいがためにデータベースを変更するってのもどうかと思いますが、実験がてら。Wordpressとかをherokuで無料で動かしたいって人にはちょっとは役に立つかも。

ここに可能性のある方法がならんでいます。
Converting from other Databases to PostgreSQL

いろんな方法がありますが、誰にでも取っつきやすい(?)、PHPでコードを書いてる人がいたので、使わせてもらいました。
バグレポート送ったんだけど、速攻で修正してくれた上に、律儀に名前まで載っけてくれてる…。なんか嬉しい。

PHP_my2pg

PHP_my2pg

Screen Shot 2014-02-07 at 3.22.45 PM

PHP_my2pgのページにSource codeがあるので、それをコピペ保存して、その中に自分のMySQLとPostgresqlの接続情報を埋めて実行。オプションに自分のデータベースの名前を忘れずに。
 

$ php my2pg.php your_database

これでMySQLからデータを取り出して、Postgresqlにテーブルつくって、データ挿入までぐわーっとやってくれる。

my.cnfに以下を追加しないと、データを抽出する段階で日本語が化けるかも。

[mysqld]
skip-character-set-client-handshake

テーブル構成とかを抜き出してCreate文とかをPostgreql用に書き換えてくれてるのが、実行結果から分かります。ご利用は自己責任で。実行前にバックアップを取りましょう。
 
無事に移行できた後にアプリをテストすると「Primary Keyが重複してレコードが作れません」みたいなエラーが出るかもしれません。そんな時はSequenceを疑ってみて、値がおかしければSELECT setval('users_id_seq', 100);とかで設定し直してあげればいいかと思います。
  

PaaSのメリット

サーバーのセッティングに時間をかけずにアプリが作れるのが個人的には一番大きい。
さくらのVPSを契約してたけど、そろそろやめようかなと思ってる。あんまり使ってないのにお金だけ払っててね…。

PaaSというかherokuのメリットは、

  • サーバーのセッティングに時間がかからない
  • 小さいアプリなら無料で運営できる
  • スケールできる
  • Addonで機能拡張もお気楽

とにかくアプリのコードを書きたくてサーバーのことは忘れたい!
という人にはおススメです。

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた