51ch @Nippon

こちらは高橋晃一の自己マンサイトです。万が一興味があればどうぞ。メッセージはお気軽に。

*

CSVをMySQLへ取り込み&改行コードについて

   


■背景
今回、Mac端末を使って、csvファイルからMySqlのテーブルにデータを入れ込みたかった。
そこでググると、まず出てくるのが、この構文

LOAD DATA LOCAL INFILE ‘/root/xxx.csv’ INTO TABLE テーブル名 FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘;

しかし、これを実行しても1行取り込まれるだけでした。しかも select * from テーブル名; で表示されるデータは、なんかずれてる。

どうしたらいいのだろうか?

広告

■対応
LOAD DATA INFILEコマンドについてより調べた。
まず、LOCALをつけることで得られる効果⇒2つ取り込み対象ファイルへのアクセス権限有無にかかわらず実行してくれる。重複レコードがあっても実行してくれる。

FELDSTERMINATED BY ‘,’⇒カンマで区切られているよのオプション。terminatedは区切られているの意味。

ENCLOSED BY ‘”‘:囲い文字がある場合のオプション。

今回のファイルは囲い文字ないので、余計なものが入っていたからかな?と思い、該当箇所を削除して実行。
LOAD DATA LOCAL INFILE ‘/root/xxx.csv’ INTO TABLE テーブル名 FIELDS TERMINATED BY ‘,’;

でも結果は、1行しか取り込まれない。
なのでもっと調べることに。

すると、改行コードが入っている場合はそれを指定する必要があることがわかりました。
LINES TERMINATED BY ‘改行コード’:改行コードがある場合のオプション。

この後、改行コードが’\n’を試し、’\r\n’を試し、

今回は’\r’これでいけました。
LOAD DATA LOCAL INFILE ‘/root/xxx.csv’ INTO TABLE テーブル名 FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\r’;

■そもそも改行コードとは
いまいち理解のできない改行コードを調べました。
LF(Line Feed)
ASCIIコード:0A
\n
CR(CarriageReturn)
ASCIIコード:0D
\r

改行コードは,一般的にWindowsが「CR+LF」,Macが「CR」,Unixが「LF」であるようだ。
MacOSX以降は「LF」になっているそうな。
今回のcsvはMacOSX以降の端末のmac版excelで作成していたのだが、「CR」だったぞ。
なぜかは、よく分からないが、改行コードのLinuxコマンドでの調べ方があった。
$ od -c test.csv | less

参考:http://ultimai.org/database/mysql/mysql-csv-inport.htmlhttp://blogs.yahoo.co.jp/ty_so_long/43425540.html
http://www.yasuc.net/2015/04/moji_bake/

 - プログラミング , ,

  関連記事

swiftは大文字、小文字の区別が大事

  エラーがでている時に確認すべきポイントとして、大文字小文 …

ng−click2回

芸人で言ったらただの一発芸です。 AngularJSを利用して、一つのclick …

swift UITableViewControrlarかUIViewControlarか

普通はUIViewController, UITableViewDataSour …

no image
Double型結果誤差

Double型では大きな数値や少数の計算をすると計算結果に誤差が生じます。 これ …

iPhoneアプリリリース時の注意

iPhoneアプリリリース時に私が引っかかったのは、Archiveを取る時です。 …

iOS Dev Centerへのアクセス

iPhoneアプリをリリースするには、 1、Certificatesの設定 2、 …

Error loading apple credentials from file

プッシュ通知の機能を実装する上で、自前でサーバーを準備するのは大変なので、AWS …

バックグラウンドで音楽を再生したい

こちらを知りたいと思う時は、きっと既に音楽は流せれるようになったけど、 アプリを …

文字列の先頭、末尾を条件に使う

スポンサードリンク 「hasPrefix」を使うと文頭に含まれているかどうかをチ …

ファビコンの設定

Stinger5のテーマを使わせてもらって、ファビコンがディフォルトのままだった …