2012-05-26 81 views
1

有人請幫助我,因爲我的頭會爆炸。將數據導入sqlite

我想在sqlite3中導入數據。我有promos.sqlpromos.csv文件。我試圖在sqlite的shell中運行此:

.read promos.sql 

還是這樣做在UNIX提示:

sqlite3 development.sqlite3<promos.sqlite3 

,每次我得到錯誤

 
Error: near line 1: near ",": syntax error 
Error: near line 18: near ",": syntax error e.t.c. 

在文件是時間以下行:

INSERT INTO promos (name, promo_type, category, phone, email, message, created_at) VALUES 
('John', 1, 3, '+111 11 111 111 11', '[email protected]', 'Some message', '2009-09-24 12:17:17'),etc 

so,it co在每行列列舉錯誤的地方。

如果我嘗試

.import promos.csv promos 

它說:

Error: promos.csv line 1: expected 9 columns of data but found 1

,但文件是9列如預期:

"13","John","1","3","+111 11 111 111 11","[email protected]","Some message","2009-09-24 15:17:17", "2009-09-24 15:17:17"

爲什麼不工作?

回答

5

對於sql問題:在INSERT語句結尾處有逗號而不是像你應該有的分號嗎?請發佈您嘗試運行的幾行sql文件,併發布promos的CREATE TABLE語句。

對於csv問題:sqlite使用|作爲默認分隔符,因此您必須將其設置爲使用逗號。此外,sqlite導入不會識別帶引號的列,因此如果您的數據中包含逗號,最好使用其他方法導入數據。有關詳細信息,請參見this article

+1

非常感謝。你給了我一個正確的主意。最初我用sentece,比如'INSERT INTO tbl_name(col_A,col_B)VALUES(1,2,3),(4,5,6),(7,8,9);'但似乎sqlite不支持這個格式。所以我已經爲每個記錄創建了帶有單獨查詢的新SQL文件,並且它可以工作。 – RaskolnikOFF

+0

是的,SQL通常不支持該語法。你可能需要單獨的INSERT語句,或者你可以像INSERT INTO mytable SELECT'aValue','another value'UNION SELECT'2nd row','some value'UNION SELECT'這是第三行','xxx'' ... – Rory