2

次の列構造のテーブルがあります。

sqlite> create table stocks(stockticker varchar(4), tradedate date, open double, high double, low double, close double, volume integer, adjclose double);

私がやりたいのは、株式のグループの毎日の株式データをこの1つのテーブルに保存しますが、現在存在する履歴データをデータに入力します。そこで、XLIの履歴をyahoo/financeからXLI.csvというファイルに保存しました

mySQLでは、次のことができるように使用します。

sqlite> LOAD DATA INLINE 'XLI.csv'
   ...> INTO TABLE stocks
   ...> FIELDS TERMINATED BY ','
   ...> LINES TERMINATED BY '\n'
   ...> IGNORE 1 LINES
   ...> (@tradedate, open, high, low, close, volume, adjclose)
   ...> SET stockticker = 'XLI',
   ...> tradedate = STR_TO_DATE(@tradedate, '%m/%d/%Y');
Error: near "LOAD": syntax error
sqlite>

SQLITEには多くの違いがあることを理解しましたが、私は初心者であり、私が見つけたすべての例は通常、次のコマンド構造を持っています。

sqlite> .import <filename> <table>

'stockticker'フィールドも設定し、最初の行(ヘッダー)を無視して、日付が正しくインポートされるようにする必要があるため、これは役に立ちません。ドキュメントやインターネットで、自分がやりたいことのような例を見つけられませんでした。

よろしくお願いします。

4

1 に答える 1

2

生データをステージングテーブルにインポートしてから、内容をティックテーブルに選択します(最初の行の値を無視するためにwhere条件を追加します)

日付文字列を変換するには、元の日付文字列を再配置して宛先の日付列に挿入することにより、有効なsqlite日付文字列(例:yyyy-mm-dd)を作成できます。

insert into tick (stockticker, tradedate, open, high, low, close, volume, adjclose)
  select stockticker, (substr(date, 7) || '-' || substr(date, 1, 2) || '-' || substr(date, 4, 2)),
  open, high, low, close, volume, adjclose from stage
于 2012-09-23T03:44:25.983 に答える