MySQLでSQL結果をCSV出力する際に、ダブルクォーテーションでデータを囲む方法

スポンサードリンク

MySQLでは、SQL実行時に SELECT … INTO OUTFILE 構文を使用すると結果をファイルに保存することができます。 以下SQL文を実行すると、テーブル TABLE_NAME の全データがCSV形式で /var/lib/mysql-files/out.csv ファイルに出力されます。出力されたCSVファイルは、各フィールドがカンマで区切られ、ダブルクォートで囲まれた形式になります。

SELECT * FROM TABLE_NAME INTO OUTFILE '/var/lib/mysql-files/out.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

上記例では以下の指定も加えています。一緒に指定するオプションとして覚えておきましょう。

  • FIELDS TERMINATED BY ‘,’: 各フィールドの区切り文字をカンマ(,)にします。
  • ESCAPED BY ‘“’: フィールドの値をダブルクォート(”)で囲みます。
  • ENCLOSED BY ‘“’: ダブルクォート自体を含むフィールド値の場合は、バックスラッシュ(\)でエスケープします。
  • LINES TERMINATED BY ‘\r\n’: 各レコード(行)を改行コード(\r\n)で区切ります。

CSVをExcelで読み込む際、データに改行が含まれていると上手くデータを読み込めない問題が起こることがありますが、ダブルクォーテーションで各フィールドを囲んでいれば、この問題を回避できます。


関連記事
MySQLでファイル出力する際のエラー「ERROR 1227 (42000): Access denied; you need (at least one of) the FILE privilege(s) for this operation」の対処方法


SQLパズル 第2版: プログラミングが変わる書き方/考え方
SQLに関する実践的な問題75問について解説した書籍。SQLで解決するものからテーブル設計自体を見直す解決方法など実践的なノウハウが学べる良書です。