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/

 - プログラミング , ,

  関連記事

AWSのSNS準備 BFTaskでエラー

AWSのSNS準備のため、アプリ側のAppDelegateにQiitaで多数アッ …

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

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

no image
ボタンへのアクションの設定方法

ボタンの設定してアクションをつけ加える時は、 button.addTarget( …

AngularJSでの構成を考えてみる

AngularJS使って、基本的な動かし方は、山田の本でわかったけど、 実際にw …

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

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

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

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

swift UITableViewControrlarかUIViewControlarか

普通はUIViewController, UITableViewDataSour …

Error loading apple credentials from file

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

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

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

no image
アニメーション設定時の注意点

アニメーションを指定する時のUIViewの設定は、 UIView.animate …