MySQL で CSV 出力する方法比較
MySQL で CSV 出力する方法として、3つ考えた。
NULL を含む場合の挙動について面白いと思ったのでメモ。
きちんと NULL 判定すればよいだけだけど、うっかり忘れるとこんな挙動になる。
CONCAT_WS でセパレータを指定
SELECT CONCAT_WS(',', A, B, C) FROM TEST;
=> NULL 値が飛ばされた。
例
1,2,3
1,3
2,3
確かに
CONCAT_WS() は空のストリングをとばしません。しかし、セパレータ引数のあとの NULL 値はすべてとばします。
と書いてある。
CONCAT で セパレータも含めて指定する
SELECT CONCAT(A, ',', B, ',', C) FROM TEST;
=> NULL を含む行は、NULL と出力される
例
1,2,3
NULL
NULL
ファイル出力する
SELECT A, B, C INTO OUTFILE './TEST.txt'
FIELDS TERMINATED BY ','
FROM TEST;
=> NULL の項目が\Nと出力された
1,2
1,\N