MySQLでSELECTしたデータをCSVファイルに出力してみよう!【MAC環境】
  • facebookページ
  • twitterページ
  • 2020.01.31

    MySQLでSELECTしたデータをCSVファイルに出力してみよう!【MAC環境】

    実務をはじめとしてCSV形式でデータが欲しいと要求されるケースは頻繁に訪れます。

    本記事では、MySQLのテーブルデータをCSVファイルに出力する方法についてご紹介していきたいと思います。

    MySQLでのCSV出力は簡単


    MySQLでテーブルデータをCSVファイルに出力するのは非常に簡単です。

    SELECT文に「INTO OUTFILE」を記述することでCSVファイル出力が可能となります。

    INTO OUTFILEの基本構文を確認しよう

    まずINTO OUTFILEの基本構文をご紹介していきたいと思います。

    基本となるSQLは通常のデータ抽出と全く同じで、SQLの末尾に「INTO OUTFILE」を追加することで指定したパスにCSVファイルを出力することが可能となります。

    INTO OUTFILEのオプション設定を確認しよう

    INTO OUTFILEには「FIELS」オプションと「LINES」オプションが存在します。

    FIELSオプション

    FIELSオプションでは、「TERMINATED BY」「ENCLOSED BY」「ESCAPED BY」の3種類の項目が指定可能です。

    • 「TERMINATED BY」では区切り文字を指定します。
    • 「ENCLOSED BY」ではフィールドを囲む文字を指定します。
    • 「ESCAPED BY」ではエスケープ文字を指定します。

    LINESオプション

    LINESオプションでは「TERMINATED BY」で改行コードを指定することが可能です。

    実際にテーブルからデータを取得してCSVファイルを出力してみよう

    ここからは実際にデータベースのテーブルからデータを取得してCSVファイル出力するサンプルSQLをご紹介します。

    まず今回利用するテーブルとして「user」テーブルを下記のデータで作成しています。

    実際にサンプルの「user」テーブルからCSVファイルを出力するサンプルSQLが下記となります。

    ポテパンダの一言メモ

    ***の部分にはコンピューターのユーザー名を設定してください。

    上記サンプルでは区切り文字「,」、フィールドの囲み文字「”」、エスケープ文字「”」、改行コードは「\r\n」で指定しています。

    オプション項目に関しては省略可能ですので、デフォルト値以外の値を設定したい場合に記述するようにしましょう。

    出力されたCSVの中身は下記のようになります。

    出力したCSVファイルにヘッダー項目を付ける方法

    実際にCSVを出力してみると上記サンプルSQLの場合、テーブルのカラム名にあたるヘッダー項目がなく、抽出した値のみが記載されたCSVファイルが出力されています。

    フィールド値を記載したCSVファイルを作成するには「UNION句」を利用します。

    出力されたCSVファイルを確認すると「UNION句」の前で指定したフィールド名がヘッダー情報として記載されていることをご確認頂けます。

    MySQLでCSV出力を実施した際に起こるエラー例


    INTO OUTFILEでCSV出力を試すと下記のようなエラーが起こる人が多いようです。

    このエラーは公式サイトに記載されているようにファイルの「INPUT」「OUTPUT」が許可されていないことが原因となります。

    エラーの原因を特定しよう

    まずは下記のコマンドを実行してみてください。

    実行した結果が下記のように「NULL」が設定されている場合、ファイルの入出力が許可されていませんので「my.cnf」を修正してあげる必要があります。

    エラーとなっている原因を解決しよう

    今回筆者の環境で変更した内容をコマンドと共にご紹介していきます。

    まずデフォルトの「my.cnf」の場所を下記コマンドで確認します。

    筆者の環境では下記のPATHに「my.cnf」ファイルがありました。

    次に上記で確認した「my.cnf」ファイルを「/etc」フォルダ配下にコピーします。

    vimコマンドで「my.cnf」ファイルを開きます。

    [mysqlId]のすぐ下に下記の1行を追加しました。

    ポテパンダの一言メモ

    既に「secure-file-priv = xxx」の指定が存在する場合、コメントアウトして設定を変更してみてください。

    エラーの原因が解決しているかを確認しよう

    再度MySQLにログインして下記のコマンドを実行してみましょう。

    今回は前回と異なり結果が「Null」ではなく下記のようになっているはずです。

    これでファイル入出力の許可設定は修正出来たことになりますので、再度MySQLでのCSV出力を試してみてください。

    ポテパンダの一言メモ

    CSV出力が出来ない原因はユーザーの環境により様々です。
    今回ご紹介した内容はあくまでエラー原因の1つに過ぎないため、解決しない場合には別の方法を検討してみてください。

    さいごに:MySQLでCSVを出力するのは意外と簡単

    本記事では、MySQLでCSVファイルを出力する方法についてご紹介してきました。

    CSV出力と聞くと何かツールなどと連携して複雑な手続きが必要なのではと考える方もいらっしゃいますが、MySQL標準機能だけで簡単に出力することが可能です。

    CSVファイルでデータが必要になることは頻繁にありますので、ぜひ使い方を覚えて活用してみてください。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE