##発生条件
mariaDBにて、INTO OUTFILE...CHARACTER SETでcsvファイルを落とした時に、csvファイルの先頭行に列タイトルを付けるためにUNIONを用いてcsvファイルを出力する事がある。
・列の先頭に列名を入れるためにUNIONで結合
・結合する列にSUM等の集合関数を用いる
上記2つの条件で列名に文字化けが発生する。
SAMPLE.sql
SELECT '重量'
UNION
SELECT SUM(JYURYO)
INTO OUTFILE 'D:\\\SAMPLE.csv'
CHARACTER SET SJIS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
FROM T_SAMPLE
上記のように処理した場合、列タイトル重量
が文字化けする。
(T_SAMPLE
のデータは文字化けしない)
で、集合関数であるSUM()
を外すと、文字化けはしない……。
確認事項
mariaDBの文字コードの確認
show variables like "chara%";
結果
Variable_name | Value |
---|---|
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | utf8 |
character_set_system | utf8 |
下手に弄ると他に影響しそうなので変更せず。
対応策
担当者に平謝りしてタイトルを英字にした。