CommentsRubyでPostgreSQLのレコードをCSV出力したときの備忘録。PostgreSQLの場合、psqlでCOPY文を投げればCSV化してくれますが、一部を変数に置き換えたり、条件を柔軟に切り替えたり、自動化するにはやはりプログラムからSQLを投げるのが良かったりします。Postgresのスキーマをローカル環境に持っていくの2パターンで開発することになります。前者の場合は同一DBに複数人が開発用として接続することになるので、ミスってデータやテーブルを削除したときや、ユニークなデータを格納したつもりがバッティングしてダメとか、開発上色々と問題があります。東京-US間のレイテンシがあるのでDB接続も低速です。Postgresのスキーマをローカルに持っていく」やり方を備忘として残しておきます。CommentsherokuからpostgreSQLのデータ移行の方法をまとめてみる。方法としては以下の2つがあるみたい。pg:pushを使うこの方法はローカルのpostgreSQLデータベースのデータをそのままherokuに反映するような方法。DATABASE_URLとheroku側のDBをリセットして、ローカルのDBをインポートする感じ。この方法の詳細はこちらから。ローカルDBのdumpからリストアする。ローカルDBのdumpを作成し、s3等のWebリソースに置き、heroku側postgreSQLからこのdumpを使ってリストアする方式。s3とかのオープンなスペースに置くとなると一時的とはいえセキュリティ的にどうなの?って印象。psqlからインポートpsqlコマンドでherokuのpostgreSQLにログインして、インポート対象のCSVファイルに対してcopyコマンドを打つと、herokuのpostgresユーザがsuperuserでない為に「ローカルからファイルを読み込めない」的なエラーになってしまう。csv"とやればインポート可能。herokuのホスト名やユーザ名等はherokuのpostgreSQL設定画面から取得する。