2009年04月04日

1分足のデータをMySQLにロードする(3)

1分足のデータをMySQLにロードする(1)と(2)

では、ヒストリカルデータをロードするテーブルの定義は、日付と時間を一つにして、MySQLのデータ型としては"datetime"にしていました。

理由は、今まで作っていたアプリケーションとの互換性のためなのですが、日付と時間を分けた形でもロードする手順を残します。

データのダウンロードは
1分足のデータをMySQLにロードする(1)
と同じで、sedの部分だけ除きます。

中身はこんなファイルです。

$ head -5 1min_2001.txt
2001-01-03,07:01:00,0.9507,0.9507,0.9507,0.9507
2001-01-03,07:02:00,0.9506,0.9506,0.9505,0.9505
2001-01-03,07:03:00,0.9505,0.9507,0.9505,0.9506
2001-01-03,07:04:00,0.9506,0.9506,0.9506,0.9506
2001-01-03,07:05:00,0.9506,0.9506,0.9506,0.9506

テーブルはこんな感じで作りました。

mysql> CREATE TABLE eur_usd_2001(
-> date date,
-> time time,
-> start decimal(6,4),
-> high decimal(6,4),
-> low decimal(6,4),
-> end decimal(6,4),
-> PRIMARY KEY (date,time)) ENGINE=MyISAM DEFAULT CHARSET=utf8
-> ;

ストレージエンジンはMyISAMなのかInnoDBなのか迷うところです。

というのも、昔は検索用途で更新が少ないテーブルであれば、MyISAMと定石のように決まっていましたが、最近ではInnoDBの性能向上もあり、どちらが良いかは一概には言えなくなってきています。

どちらが早いかも、2つを比べて検証してみます。

であとは、ロードするだけなので、
こちらも前と同様の手順です。

mysql> load data infile '/tmp/1min_2001.txt' into table eur_usd_2001 fields terminated by ',';

これで、日付と時間を分けたテーブルにロードができました。

あと忘れずにAnalyze

mysql> analyze table eur_usd_2001;
+------------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+---------+----------+----------+
| fx2.eur_usd_2001 | analyze | status | OK |
+------------------+---------+----------+----------+
1 row in set (0.13 sec)


うーんも元々こうすれば良かったのに。。。

↓励みになりますので、宜しければクリックをお願いします。
にほんブログ村 為替ブログ FX サラリーマン投資家へ


にほんブログ村 為替ブログ FX テクニカルトレード派へ


人気ブログランキングへ
posted by よろ at 12:00| Comment(0) | TrackBack(0) | システム構築
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/28206030

この記事へのトラックバック