freedom-man.com

ブログは俺のセーブポイント

Tag: postgreSQL

RubyでPostgreSQLのレコードをCSV出力してみた

RubyでPostgreSQLのレコードをCSV出力したときの備忘録。PostgreSQLの場合、psqlでCOPY文を投げればCSV化してくれますが、一部を変数に置き換えたり、条件を柔軟に切り替えたり、自動化するにはやはりプログラムからSQLを投げるのが良かったりします。

Continue reading

Heroku Postgresからのエクスポート

Heroku Postgresからのエクスポートの備忘録(今更感ありますが…)

Continue reading

Heroku Postgresのスキーマをローカルに落として開発する

Heroku Connectを使うとHeroku Postgres側に自動的にスキーマが生成される感じになるので、開発する場合は

  • ローカル開発環境からHeroku PostgresのDBに直接接続する
  • Heroku Postgresのスキーマをローカル環境に持っていく

の2パターンで開発することになります。ただ、前者の場合は同一DBに複数人が開発用として接続することになるので、ミスってデータやテーブルを削除したときや、ユニークなデータを格納したつもりがバッティングしてダメとか、開発上色々と問題があります。さらに東京-US間のレイテンシがあるのでDB接続も低速です。

ということで、実際に開発する場合は後者のパターンになるのですが、この「Heroku Postgresのスキーマをローカルに持っていく」やり方を備忘として残しておきます。

Continue reading

herokuのpostgreSQLへのデータ移行

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はこちら

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

© 2017 freedom-man.com

Theme by Anders NorenUp ↑