LoginSignup
14
13

More than 5 years have passed since last update.

taps で簡単に MySQL から PostgreSQL へデータを移行する

Posted at

諸事情で MySQL から PostgreSQL にデータを移行しなければならなくなったので taps を使ってみた。

taps gem

taps は、データのインポート/エクスポートを用意に実現するシンプルなgem。

インストール

$ gem instal taps 

$ gem instal sqlite3 # 標準でsqlite3を使おうとするので必要ぽい
$ gem instal mysql # 移行元:MySQL
$ gem instal pg # 移行先:PostgreSQL 

サーバ

taps は sinatra アプリケーションとして動作し、http経由でデータをやり取りする。
また、簡易的なセキュリティ対策として、httpのためのユーザ名とパスワードを設定する必要がある。

$ taps server mysql://localdbuser:localdbpass@localhost/dbname httpuser httppassword

任意のDBを指定する際は [DB_TYPE]://[DB_USERNAME]:[DB_PASSWD]@[DB_HOST]/[DB_NAME] みたいな感じで。

クライアント

taps サーバは標準で5000番ポートで動作しているのでそこに接続する。(下記の例ではホスト example.com で動作しているものとする)

$ taps pull postgres://dbuser:dbpassword@localhost/dbname http://httpuser:httppassword@example.com:5000
  • taps pull サーバ側DBからデータを取得する。
  • postgres://dbuser:dbpassword@localhost/dbname localhost で動作している postgresql をディスティネーションにする。 アクセス権限さえあれば localhostに限らず、どこのサーバでの利用できる。
  • http://httpuser:httppassword@example.com:5000 前述のtaps サーバに接続する。httpuserhttppassword は起動時に指定したもの。

クライアントで tap push にすれば、サーバ側で指定したDBにデータをインポートすることも出来る。

実行例

実行するとこんな感じでぐりぐりデータを移行してくれる。スキーマも拾ってくれるので便利。

$ taps pull postgres://dbuser:dbpassword@localhost/dbname http://httpuser:httppassword@example.com:5000
Receiving schema
Schema:          0% |                                                                                                                                           | ETA:  --:--:--
Schema:         33% |=============================================                                                                                              | ETA:  00:00:00
Schema:         66% |===========================================================================================                                                | ETA:  00:00:00
Schema:        100% |===========================================================================================================================================| Time: 00:00:01
Receiving data
3 tables, 600 records
page:          100% |===========================================================================================================================================| ETA:  00:00:00

see also:

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13