エクスポートした値にNullを含む場合に「¥N」になる場合 「MySQL」

2021-07-02

MySQLでCSVファイルにエクスポートした場合、「Null」が「¥N」になる

下記のように「SELECT * FROM 〜〜 INTO OUTFILE 〜〜」でMySQLのデータをCSVファイルにエクスポートした場合、「Null」を含むとその値が「¥N」となって出力されます

mysqL>
SELECT * FROM table_name
INTO OUTFILE '/var/tmp/test_table.csv'
  FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '"';

「¥N」を「””」などの空白に置換すれば空白扱いになりますが、その都度行うのは面倒ですしデータが大きいと置換に時間がかかります。

IFNULL関数で、NULLの場合は、空文字に設定して出力する

MySQLでは、「Null」が「¥N」になってしまうのは、MySQLではNullと空文字の扱いが違うためです。
そのため、Nullを含む場合は出力時に「空文字」になるように、IFNULL()関数してNullの場合は、どのように置換するか指定します

mysqL>
SELECT name, price, IFNULL(code, '') FROM table_name
INTO OUTFILE '/var/tmp/test_table.csv'
  FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '"';

 

Linuxmariadb,MySQL

Posted by admin