2014-03-19 235 views
4

我想導入CSV文件導入的SQLite數據庫使用的SQLite導入CSV文件

sqlite> .separator , 
sqlite> .mode csv data 
sqlite> .import test.csv data 

其中data是表名有三列,就像文件。

該文件有一些使用雙引號封裝的字符串值。 一些字符串值在他們(實際例子從文件"Bond\, James"),這應該被視爲一列逗號,但SQLite的產生一個錯誤

Error: test.csv line 2: expected 3 columns of data but found 4 

我怎樣才能正確地作出SQLite的進口這些價值?

回答

2

我知道這有點舊,但這是第一個相關的谷歌搜索結果,所以我想分享我的解決方案。

使用不同的分隔符,並刪除有關值的引號。

sed -i -e 's/","/|/g' -e 's/"$//g' -e 's/^"//g' file.csv 

sqlite> .separator "|" 
sqlite> .import file.csv tablename 
0

我所經歷的這個問題我自己,發現自己能更容易修改我的腳本,以便它轉儲,而不是到csv分隔值SQL查詢。

將csv數據導入sqlite3時不僅存在逗號問題,而且還存在換行符的問題。

我建議如下:

  • 修改腳本生成SQL轉儲
  • 轉換的CSV轉儲爲sql 查詢和餵它SQLITE3