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/

 - プログラミング , ,

  関連記事

Swift1.1→1.2のキャスト時の注意 AS

2015年4月にiOS 8.3が発表され,iPhoneアプリ開発ツールであるXc …

no image
無料配布のFacebookやTwitterのソーシャルロゴアイコン素材まとめ23選|LIG INC.

アプリにソーシャルボタンを設置するときに、デザインがなく困っていたところ、 こち …

swift2.0でAWSのSNSを作ってみる

SNSからプッシュ通知を受け取るためのアプリ側での記述方法がswift2.0にな …

エラーじゃないのにコンパイルエラーになってしまう

swiftは、基本的に自動コンパイルされて、コンパイルエラーが出る仕組みになって …

railsでオブジェクトをnewできないエラー

<事象> rails consoleから単純にnewしたら以下のエラーが表示され …

携帯からのWordPressが便利でいいーね

 私はiPhoneからWordPressの、アプリ経由で投稿してますが、PC …

URLの埋め込み&日本語検索(エンコード)

単純に、アプリ内にURLを埋め込んで、ボタンを押したらリンク先に飛べるようにした …

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

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

【AngularJS】user別に紐づく値を取得

ユーザーごとに表示する値を変更する場合のメモ。 例えば、ユーザーが保持しているポ …

Error loading apple credentials from file

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