【mysql】改行を含むCSVファイルをインポートする方法

改行を含むCSVファイルのインポート方法。

CSVファイルの記述ルールは次の通り。

CSVのルール(一部)
——————————
LOAD DATA INFILEがデフォルトで対応している書式は、フィールド区切りがタブ、行末が改行。
値は基本、ダブルクォートで囲む。但し、「ダブルクォート(”)」「カンマ(,)」「改行()」などの制御文字を含まない場合は「”」で囲まなくても可。
よって、値に改行を含む場合は、必ず「”」で囲む。

「”」のエスケープは「””」(連続したダブルクォート)。場合により「\”」のエスケープも可。
囲み文字と区切り文字の間には何も入れない。
×”値1”, “値2” → ○”値1”,”値2” (×の例はカンマの左に半角スペースが入っている)
——————————
追加ルール1 → ファイルの一番最後に改行は入れない。改行を入れるとフィールドの区切り文字がデータと一緒に入ってしまう現象を確認。

つまり値を「”」で囲めば問題なく動作する。

実際のコマンド
———————————————
load data local infile “/home/username/www/text.csv” into table テーブル名 fields terminated by ‘,’ enclosed by ‘”‘
———————————————

「enclosed by」を指定して「”」が囲み文字であることを伝える。もちろんCSVファイルの値自体も「”」で囲むこと。

(※CSVファイルをZIPで圧縮のままload data local infileを実行すると、改行も区切りと認識してうまくいかないかも?実行するときは必ずCSVファイルの状態で。)

※ちなみにxamppをインストールしたwindowsのmysqlで実行する場合は「local」は不要。
CSVファイルのパスは、「¥」でなく「/」を使う
——————————————————–
load data infile ‘C:/xampp/php/test.csv’ into table テーブル名 fields terminated by ‘$’ enclosed by ‘%’
——————————————————–

The used command is not allowed with this MySQL version」とエラーが出る場合は、「–enable-local-infile」をつけてmysqlサーバーに接続しなおすこと。詳しくはこちら

タイトルとURLをコピーしました