PostgreSQL(RDS)で改行コードCRLFでCSV出力する方法

PostgreSQL(RDS)×COPYメタコマンドの課題

RDS上のPostgreSQLからCOPYメタコマンド(¥COPYで)データを抜いた際に、改行コードがLFになってしまう

RDS上にあるPostgreSQLでCOPYメタコマンドを使うと環境の問題もあり改行コードLFとなってしまいます。

Windows環境では、改行コードをCRLFとしたいので、WindowsのCMDでCOPYメタコマンドを実行しアウトプットのCSVの改行コードをCRLFとする方法を残しておきます。

PostgreSQL(RDS)×COPYメタコマンドの改行問題の解決方法

動作検証で利用した環境はPostgreSQL12(RDS)、Windows10となります。

コンソールに出力→CSV出力とする。

具体的にSQLのサンプルを書くと、

psql -h localhost -p 5432 -U postgres -d testdb -c "¥COPY (SELECT * from test) TO "c:\test\test.csv" 

このように書くと、改行コードをLFでCSV出力してしまいます。

そこで、

 psql -h localhost -p 5432 -U postgres -d testdb -c "¥COPY (SELECT * from test) TO STDOUT " -o "c:\test\test.csv" 

このように書き換えます。

ポイントは、

TO STDOUT " -o "c:\test\test.csv" 

の部分で

TO STDOUT

とすることで、COPYメタコマンドで取得したデータをコンソールへ出力します。

-o "c:\test\test.csv" 

でコンソールに出力したデータをCSV書き出します。

このようにコンソールに出力→CSV書き出しとすることで改行コードをLFからCRLFへ変換してCSVに出力することができます。

COPYメタコマンドとついでにCOPYコマンドについてはこちらのピープルソフトウェア様のブログでわかりやすく説明がされていましたのでオススメしておきます。

関連記事

VBSでRDSにPostgreSQLの¥Copyを使う方法

psql.exeを使ってVBSでSQLを実行する方法

ぜひ!シェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。