2016-04-15 45 views
2

所以我創造了這個表,這些列:ERROR:預計最後列之後的額外數據

CREATE TABLE public.gps_0 
(
nmea_sentence text, 
utc_time integer, 
latitude double precision, 
lat_designator character varying(255), 
longitude double precision, 
long_designator character varying(255), 
fix_quality integer, 
num_satellites integer, 
hdop integer, 
altitude double precision, 
alt_units character varying(255), 
geoidal_separation double precision, 
gs_units character varying(255), 
blank integer, 
checksum integer 
    ) 

這是我導入.csv文件數據: enter image description here

這是我在做什麼之前要導入的文件:

enter image description here

然後我打IMPORT和我得到這個錯誤信息:

enter image description here

這對我來說沒有任何意義,因爲我有我的兩個代碼15列和我的15列中的數據。我不知道爲什麼這個錯誤,任何幫助都會做。謝謝!

+1

檢查文件。從錯誤中可以看出,它在行尾有空列。你需要刪除這些。 –

+0

我已經刪除了空白欄的形式,並仍然給我同樣的錯誤...也許這個事情只是在我之外。哈哈哈!我也修改了代碼。 – dontbadick

+0

在文本編輯器(而不是Excel)中打開csv文件(例如Notepad ++或VSCode) - 看看是否有第一行末尾的一串逗號。另外:我不認爲Postgres會很樂意將'0000 * 54'視爲一個整數。 – GregHNZ

回答

2

這很有可能與文件編碼有關。

PostgreSQL的COPY(這是這個導入工具可能使用的)默認的編碼是UTF-8,它可能是你的文件不可用。如果它是在Windows上創建/編輯/保存的,則可能需要指定不同的編碼。

您需要嘗試確定文件的編碼,這不幸並不總是很直接。有一些工具可以幫助,但不能保證爲您提供正確的答案。

我已經在Python庫cchardet上取得了成功 - 當然這需要Python中的一些簡單編碼。如果你知道一個小Python,那麼他們的GitHub頁面就有一個很好的例子:https://github.com/PyYoshi/cChardet

另外,只需要搜索一些Windows編碼檢測工具。


一旦你已經確定你的文件的編碼,你可以在導入工具或COPY命令指定它。該工具似乎有一個下拉,這可能會更容易;但是,你可以參考一下什麼是PostgreSQL的支持在這裏:https://www.postgresql.org/docs/current/static/multibyte.html


我已經使用這個方法成功 - 希望這將解決您的問題,太。

+1

謝謝你提到的編碼問題......我從來沒有猜到它!所以在我將CSV文件編碼爲UTF-8之後,它就起作用了! :D非常感謝你! – AlwaysANovice

相關問題