2

我有一个具有以下列结构的表:

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

我想要做的是将一组股票的每日股票数据保存到这个表中,但用当前存在的任何历史数据填充它。所以我将 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 回答