このブログをご覧のみなさん、こんにちは。
PostgreSQL からカンマ区切り (CSV) やタブ区切り (TSV) でデータを出力する場合、出力するデータに改行が入っていると CSV や TSV のフォーマットが崩れてしまい、Excel などでうまく開けない(=列が崩れる)時があります。出力してから改行コードを置換すると面倒ですし、大変なので、出力する際に変換する方法を調べたので、その手順をメモとして残しておきます。
改行コードを replace する
出力する際に replace 関数で置換します。置換対象の改行コードは以下のようになっています。
- chr(13) : CR(キャリッジリターン)
- chr(10) : LF(ラインフィード)
- chr(13)||chr(10) : CRLF
select
replace(replace(replace(example.example_data,chr(13)||chr(10),' '),chr(13),' '),chr(10),' ')
from
example;