前回、株価のヒストリカルデータを銘柄コード別にファイルに落とすところまでできました。このままでは使いづらいのでリレーショナルDBに入れることにします。
ただ、この動作しているマシンがRaspberryPIなので、データベースを入れるというような暴挙はできません。そこで、組み込みきらしくSQLiteを使うことにします。
- schema
$ sqlite3 stock.db SQLite version 3.7.13 2012-07-17 17:46:21 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .schema CREATE TABLE histDaily( date text, open real, high real, low real, close real, volume real, adj_close real, code text ); CREATE UNIQUE INDEX idx_histDaily on histDaily(code,date); sqlite>
- hist_import.py
#!/bin/env python # coding:utf-8 import sqlite3 import sys def import_data(file): con=sqlite3.connect("stock.db",isolation_level=None) sql=u"insert into histDaily values(?,?,?,?,?,?,?,?)" for line in open(file,'r'): ay=line.split('\t') con.execute(sql,(ay[0],ay[1],ay[2],ay[3],ay[4],ay[5],ay[6],ay[7])) con.close() if __name__ == '__main__': print sys.argv[1] import_data(sys.argv[1])
- hist_imprt.sh
#!/bin/sh codes=`ls data/*.txt|grep -v master` for code in $codes;do echo $code python hist_import.py $code done
これで動かしてみたのですがちょっとおそいです。というか丸一日動かして1000銘柄も取り込めていない。。。
後ほどチューニングすることにします