【Mysql】CSVファイルをDBにインポートする


今日やること

CSVでダウンロードしたファイルをmysqlを使ってDB(phpmyadmin)へ格納する

以前結構悩んだ上に無事成功させたのですがメモるのを忘れ再度時間を要してしまったため備忘録という意味も込めてまとめる。

前提

スプレッドシートに入力したトレーニング情報をcsvでダウンロードしmysqlを用いてDBへ格納させる。

スプレッドシートをCSV形式でダウンロードする

該当のSSのシートを表示し「ファイル→ダウンロード→カンマ区切りの値(.csv、現在のシート)」の順に押下しダウンロードする。

とっても簡単。

現在使っているオブジェクトの傘下に置いてあげる

今回Torekaというオブジェクトを使って開発しているのでその上に該当のCSVファイルをスクロールして持っていけばOK

これで事前準備OKということで。
(デスクトップ上などに置いてもできるそうですがなんかうまくいかなかったのでこのやり方が間違いないかと)

ターミナル上でMysqlを動かしていく

では準備ができたので実際にsqlを使ってDBにCSVファイルを格納していきます。

前提条件

・予めアプリケーションを用意し、CSVファイルのデータを格納するモデル(今回はadvicedateモデル)を用意しておく
・今回はウェブアプリケーションの作り方はノータッチ。過去の記事を読んでね
・またコマンドの意味なども趣旨とは異なるので書きません。もし気になる人は検索してみてね

mysql(マイ エス キュー エル)とは

mysqlとは、データを保存するデータベースを管理するソフトの一種
今回はCloud9を使って開発していくので既にインストールされている。ので起動させましょう。

※$ が先頭についている場合はターミナルでの作業となります。
また今回は全てターミナル上での作業になります。

#mysqlの起動(すでに起動している場合もあります)
$ sudo service mysqld start
#mysqlにユーザー名『root』で接続する
$ mysql -u root
#データベースの確認
mysql> SHOW DATABASES;
#データベースの選択(今回はadvicemenuモデルを使う)
mysql> USE toreka_development;
#tableの中身を確認
mysql> SHOW TABLES;
#table内のカラム一覧を確認(今回はadvicemenusのカラム確認)
mysql> SHOW columns FROM advicemenus;

これでほんとに準備完了。
次から実際にCSVを取り込んでいきます。

mysql> load data local 
       infile "/home/ec2-user/environment/toreka/advicemenudb.csv" 
       into table advicemenus 
       fields terminated by ',';

1行ずつ入力してエンターで進んでいくでもOKです。

今回はスプレッドシート上にカンマがないので上記だけでOKですが、
例えば"ベンチプレス"などカンマが入っている場合は下記のように書きます。

カンマなどの囲み文字がある場合は最後の行に
「enclosed by '"';」
を足してください。

その際 ; が最終行の意味をもっているのでこのように書きます。

mysql> load data local 
       infile "/home/ec2-user/environment/toreka/advicemenudb.csv" 
       into table advicemenus 
       fields terminated by ','
       enclosed by '"';

こんな感じで結果が出れば成功です。

Query OK, 184 rows affected, 368 warnings (0.01 sec)
Records: 184  Deleted: 0  Skipped: 0  Warnings: 368

しっかり格納されていますね。

参考

【MySQL】CSVファイルをデータベースにインポートする
【MySQL】csvファイルをDBにインポートする方法

基本参考をみていただければうまくいくかと思います。
が、もしうまくいかなかったら上記試してみてください。では。