読者です 読者をやめる 読者になる 読者になる

/var/log/laughingman7743.log

I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?

Redshiftでヘッダ付きのCSV出力を強いられた時の対処法

以前はunloadコマンドにparallelオプションがなかったので、Pythonでちょっとしたスクリプトを書いてファイルマージとヘッダの追加をしていました。 unloadコマンドにparallelオプションが追加され、6GBぐらいまでなら単一ファイルに出力できるようになったので、SQL文を工夫すれば簡単にヘッダ付きのCSVが出力できます。*1 以下はダブルコーテーション括りで出力する場合のSELECT文。

  1. 全フィールドtext型にキャスト
  2. coalesce/nvl関数でnullを取り除く
  3. ダブルコーテーションを追加
  4. union allでヘッダ追加
  5. ヘッダ行が先頭になるようにsort_orderでソート

このselect文をunloadコマンドで指定する。 select文のシングルコーテーションをエスケープするのと、parallel offのオプションを忘れずに。

これでRedshiftでヘッダ付きのCSV出力を強いられても安心です。 unloadコマンドのオプションでヘッダの出力を指定できるようになるといいですね。

Enjoy!