PostgreSQLから改行コードを抜いたデータexportする

photo credit: Daniel Kulinski via photopin cc

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;