2016年4月2日土曜日

株価データベースをload data local infile しようとして失敗した

データゲットのデータをMYSQL にインポートする時のメモ

data-get 10年 株価 cdrom も買った5775円だったが4月からは値上がりの様子。
しかし、データゲットのデータはエクセルだけじゃちょっと使いにくい形式。
MySQLとかDBを活用した方がいいっぽい。

load data local infile を使ってやるつもりだった。 ちなみにCD-ROMの構成は
./1990
./1990/199001.zip
./1990/199002.zip
./1990/199003.zip
./1990/199004.zip
./1990/199005.zip
./1990/199006.zip
./1990/199007.zip
./1990/199008.zip
./1990/199009.zip
./1990/199010.zip
./1990/199011.zip
./1990/199012.zip
./1991
./1991/199101.zip
./1991/199102.zip
./1991/199103.zip…

みたいになってて各zip には月ごとの4本値データが全部入ってる感じの
単一のテキストが入っている。

面倒なので、寝てる間にどうにかする作戦。

cd 株価データ/
for i in `ls -1 */*.zip`; do funzip $i >> ~/all.txt; done
cd ~

なんと全て解凍して結合するのに、unix だと2,3行でできる。 で、できたall.txt は 桁を間違えたかと思ったが普通に間違いなく1GByte のファイルになっていた。下記コマンドを打って寝るというのが当初の作戦であった。

load data local infile 'all.txt' replace 
into table  tbl_dg_ohlc fields terminated by ',' 
lines terminated by '\r\n';
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

んぬぬ。
タイムアウト。。
┐(´∀`)┌ヤレヤレ。てか若干ヤッパリ感。


mysqlimport ではだめだろうか。
mv all.txt tbl_dg_ohlc
mysqlimport -u root -L --lines-terminated-by="\r\n"
 --fields-terminated-by="," db_finance tbl_dg_ohlc -p
load data local infile でダメだったからダメいかもと思いつつ。 寝てみる。起きてきて終わってたら超嬉しい。 もやすみ

0 件のコメント:

コメントを投稿