2012-09-23 75 views
2

我有以下柱結構的表:源碼:導入CSV到表

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

我想要做的就是保存每日股票數據的一組股票到這一個表,但與填充它什麼目前存在的歷史數據。所以我救了historicals爲XLI從雅虎/財務到一個名爲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」字段,忽略第一行(頭),並確保日期被正確導入。我在文檔或互聯網上沒有找到任何示例顯示我想要做的事情。

我會非常感謝您的幫助。

回答

2

導入原始數據到一個臨時表,然後選擇內容到刻度表(WHERE條件添加到忽略來自第一線的值)

的日期字符串轉換,你可以創建一個有效的sqlite date string(例如: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 
+0

謝謝jspcal。我創建了一個沒有stockticker列的登臺表,因爲在.csv文件中沒有列。如果我現在想執行你已經提供的代碼,例如我如何將stockticker字段設置爲「XLI」?感謝你的幫助。 – codingknob

+0

我的意思是如何在tick表中爲每一行設置/插入stockticker字段?我已將臨時表中的所有內容都複製到了tick表中,但我現在唯一需要做的事情是設置股票行情欄。 – codingknob

+0

我發現它:http://stackoverflow.com/questions/6728738/how-to-insert-same-value-to-entire-column-in-sqlite3 – codingknob