前回、株価のヒストリカルデータを銘柄コード別にファイルに落とすところまでできました。このままでは使いづらいのでリレーショナルDBに入れることにします。
ただ、この動作しているマシンがRaspberryPIなので、データベースを入れるというような暴挙はできません。そこで、組み込みきらしくSQLiteを使うことにします。
- schema
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $ 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/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
1 2 3 4 5 6 7 | #!/bin/sh codes=`ls data/*.txt|grep -v master` for code in $codes;do echo $code python hist_import.py $code done |
これで動かしてみたのですがちょっとおそいです。というか丸一日動かして1000銘柄も取り込めていない。。。
後ほどチューニングすることにします