2012/08/21

CSVファイルの入出力

(大量)データの読み書きには、CSVファイルが基本です。ここではそのCSVファイルをmysqlに取り込む方法を説明します。
※この記事の執筆に当たっては、CSVファイルの読み書きを参考にしました。ありがとうございます。

1. sampleデータの準備


まずはサンプルデータを準備します。特になんでもいいですが、最初ですから手で修正が可能な程度の小さいファイルで練習しましょう。ここでは MLBホームページ http://mlb.mlb.com/mlb/standings/ から、最新の勝敗データを使用したサンプルファイル(sample.csv)を用意しました。この表をExcelにコピーし、csvファイルとして保存します。

たぶん私がまだmysqlを良く知らないせいだとは思いますが、このデータの読み込みでは注意点が必要です。項目"L10"は日付のデータになっていますが、excelに読み込むと、7月3日のように、自動的に日付に換算され、保存時にはご丁寧に"2012/7/3"のような形にします。mysqlでは"/"が特殊文字に割り当てられているため、このまま読もうとしてもうまくいきません。そのため少々面倒ですが、ryotaroはこの値を"7-3"のような形で保存しました。
また"Last game", "Next game"欄にも特殊文字","が使われています。その為、今回の記事で用いるsampleファイルからは除外しました。






2. テーブルを作る
create table t1 (
teamchar(50),
w int,
L int,
PCT double,
GB double,
E int,
WCGB double,
L10 char(50),
STRK char(10),
HOME char(20),
ROAD char(20)
);

































ここではテーブルを作ります。テーブルの項目は、読み込むcsvに対応した形でなくてはいけません。テーブルの作成ですが、  作成: create table  削除: drop table を用います。mysqlのコマンドラインで入力してもよいですが、 項目数が11と多いので、ここではコマンドを入力した マクロファイル(sql.txt)を用意して、mysqlにそれを読み込ませます。 sql.txtの中身は左です。 これをcmdで、  cmd>mysql test < sql.txt のようにして読み込ませます。問題がなければコマンドラインは特に何も出力しません。t1がすでに存在する場合は、mysqlで mysql>drop table t1; のようにして削除してからこのスクリプトを実行します。














3. データソースの新規作成

mysqlで、項目が作成されているか確認しましょう。
 >show fields from t1;
と入力すると、全てのfieldが表示されます。
4. CSVファイルの読み込み

mysqlで、”load"コマンドを使って、データを読み込みます。
 >load data infile "CSVパス名" into table t1 fields terminated by ',';
と入力することで、CSVファイルをテーブルt1に読み込みます。CSVのパス名ですが、"\"を使ってしまうと特殊文字と認識されてしまうため、"/"で区切りましょう。
5. 確認
さて、データは入力されたでしょうか。確認します。
 mysql> select * from t1;
と入力します。
データは入力されていますか?
ryotaroはOKでしたが、sampleデータの準備等に結構時間かかりました。

0 件のコメント:

コメントを投稿