herokuからpostgreSQLのデータ移行の方法をまとめてみる。

方法としては以下の2つがあるみたい。

  1. pg:pushでローカルのレコードまるごとインポート
  2. 標準入力からpsqlコマンドでインポート

1. pg:pushを使う

この方法はローカルのpostgreSQLデータベースのデータをそのままherokuに反映するような方法。

具体的には

とheroku側のDBをリセットして、ローカルのDBをインポートする感じ。

この方法の詳細はこちらから。

2. ローカルDBのdumpからリストアする。

ローカルDBのdumpを作成し、s3等のWebリソースに置き、heroku側postgreSQLからこのdumpを使ってリストアする方式。

s3とかのオープンなスペースに置くとなると一時的とはいえセキュリティ的にどうなの?って印象。

詳細はこちら

3. psqlからインポート

psqlコマンドでherokuのpostgreSQLにログインして、インポート対象のCSVファイルに対してcopyコマンドを打つと、herokuのpostgresユーザがsuperuserでない為に「ローカルからファイルを読み込めない」的なエラーになってしまう。

ただし、標準入力からだといけるので

とやればインポート可能。

herokuのホスト名やユーザ名等はherokuのpostgreSQL設定画面から取得する。

参考URLはこちら

ところで、一括更新する場合(例えばマスタの更新とか)ってどうするんだろ?