2017/06/09 PostgreSQLを勉強する
_ [SQL]為替データを SQLで取り込むべく、SQLを勉強ちう
テーブル構造は、先日作成したものをそのまま作成。
前提条件:
他プログラムからは hdata テーブルを用いたクエリを行う。
一方で為替データがどんどん更新されていくとして、そちらは hdata_new テーブルを用いる。
一定時間経過すると hdata_new の内容を hdata に対して上書きする。
- CSVファイルから hdata テーブルへ取り込む
COPY hdata (Date, Time, Open, High, Low, Close) FROM '/PathToCsv/2017.csv' DELIMITER ',' CSV;
- 取り込んだ行数を確認
SELECT COUNT(*) FROM hdata;
- 同じテーブル構造を持つ hdata_new との比較
- hdata にあって、hdata_new に無いデータ内容の確認
SELECT date,time,open,high,low,close,volume FROM hdata EXCEPT SELECT date,time,open,high,low,close,volume FROM hdata_new;
- hdata_new にあって、hdata に無いデータ内容の確認
SELECT date,time,open,high,low,close,volume FROM hdata_new EXCEPT SELECT date,time,open,high,low,close,volume FROM hdata;
- date, time が同一で、中身(為替データ)が異なるデータ数を確認
SELECT count(*) FROM hdata, hdata_new WHERE hdata.date = hdata_new.date AND hdata.time = hdata_new.time AND (not hdata.open = hdata_new.open OR not hdata.high = hdata_new.high...);
- 該当するデータを hdata から削除
delete FROM hdata USING hdata_new WHERE hdata.date = hdata_new.date AND hdata.time = hdata_new.time AND not hdata.open = hdata_new.open;
- hdata_new に有って、hdata に無いデータを追加
INSERT INTO hdata (date,time,open,high,low,close,volume) SELECT date,time,open,high,low,close,volume FROM hdata_new EXCEPT SELECT date,time,open,high,low,close,volume from hdata;
- 更新された結果を確認してみる
SELECT * FROM hdata ORDER BY date desc, time desc LIMIT 10;
[ツッコミを入れる]