2012-10-31 53 views
2

我想導入一個CSV文件(在https://github.com/veekun/pokedex/blob/master/pokedex/data/csv/pokemon_species_names.csv找到的口袋妖怪CSV文件)到SQLite3。我使用下面的行創建一個表:SQLite導入CSV文件 - 預期的3列,找到1948

sqlite> create table pokemon_species_names (pid integer, lang integer, pokemonName text, genus text);

的正常工作,當然,但是當我嘗試導入上述CSV文件,我得到以下錯誤:

sqlite> .separator ","(編輯:忘了最初添加這個,但我沒跑,這也)

sqlite> .import ./pokemon_species_names.csv pokemon_species_names

Error: ./pokemon_species_names.csv line 1: expected 4 columns of data but found 1948

爲什麼只有4個時才能找到1948列數據?

+0

我會懷疑該csv文件中存在行尾不兼容問題。你在使用什麼操作系統? – glibdud

+0

該文件在您的系統上的外觀如何?您可能會遇到換行符問題(例如,您使用Unix換行將文件下載到Windows系統,並且操作系統將其視爲單行)。 –

+0

OS X.我有來自工作正常的同一個源的文件,但我也必須修改這個特定的文件以排除某些數據。我在Excel中這樣做了。 – muttley91

回答

3

SQLite可能不在尋找合適的分隔符。嘗試運行:

.separator "," 

導入前。

+0

對不起,我應該說明我確實這樣做了。我會將其添加到我的問題。 – muttley91

0

回答我自己的問題。原來我使用的文件有問題,因爲我修改了它(在Excel中)。我使用了原始的,未經修改的文件,它工作。感謝glibdud和Larry Lustig爲我指出了正確的方向。

0

CSV文件應該以Unicode(UTF-8)的Unix(LF)進行編碼 您可以從的TextWrangler

做,如果你從Windows/Mac的保存它,它是Windows(CRLF)或經典的Mac (LF)

0

對於任何人在看這個(5年後),在Mac上的TextWrangler中,選擇「另存爲」Unicode(UTF-8)和Unix(LF)。然後.import將像魅力一樣工作。