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

ということで、今回はRubyのpgライブラリを利用してCSV出力してみました。ActiveRecordだとちょっと大掛かりになってしまうのと、SQLを直接書かない場合はSQLが見えづらく、直接書く場合は旨味が無いので利用を見送りました。

コードはこんな感じ

ActiveRecordを利用しないとは言え、YAMLでDBパラメータを書いてそれを良い感じに読み込ませたかったので、Settingslogicを使っています。

application.ymlはこんな感じで

また、ERB形式で書いたSQLファイルを読むことで変数を設定することができますし、Rubyで条件を書いたりできます。

Heroku PostgresのようにURI形式で指定する場合は以下のようにすればOK。