2016-04-15 48 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

相关问题