【发布时间】:2017-07-25 15:39:12
【问题描述】:
当我尝试使用分隔符 | 导入数据时,我收到错误:
错误:最后一个预期列之后的额外数据
如果我从以下示例数据中存在问题的字段中删除双引号或单引号,我可以加载数据,但我的要求是我需要所有数据而不删除任何数据。
这是我的复制命令:
COPY public.dimingredient FROM '/Users//Downloads/archive1/test.txt'
DELIMITER '|' NULL AS '' CSV HEADER ESCAPE AS '"' ;
我的桌子:
public.dimingredient
(
dr_id integer NOT NULL,
dr_loadtime timestamp(6) without time zone NOT NULL,
dr_start timestamp(6) without time zone NOT NULL,
dr_end timestamp(6) without time zone NOT NULL,
dr_current boolean NOT NULL,
casnumber character varying(100) COLLATE pg_catalog."default" NOT NULL,
ingredientname character varying(300) COLLATE pg_catalog."default" NOT NULL,
matchingstrategy character varying(21) COLLATE pg_catalog."default",
percentofconfidence double precision,
disclosurestatus character varying(42) COLLATE pg_catalog."default",
issand character varying(1) COLLATE pg_catalog."default",
sandmeshsize character varying(20) COLLATE pg_catalog."default",
sandquality character varying(20) COLLATE pg_catalog."default",
isresincoated character varying(1) COLLATE pg_catalog."default",
isartificial character varying(1) COLLATE pg_catalog."default",
CONSTRAINT dimingredient_pkey PRIMARY KEY (dr_id)
)
我的数据:
5144|2016-07-01 13:34:25.1001891|1900-01-01 00:00:00.0000000|9999-12-31 23:59:59.9999999|True|93834|"9-octadecenamide,n,n-bis(2-hydroxyethyl)-, (9z)"|"NO CAS MATCH FOUND"||Disclosed|||||
5145|2016-07-01 13:34:25.1001891|1900-01-01 00:00:00.0000000|9999-12-31 23:59:59.9999999|True|93834|"9-octadecenamide,n,n-bis-2(hydroxy-ethyl)-,(z)""|"NO CAS MATCH FOUND"||Disclosed|||||
【问题讨论】:
-
最后一个分隔符后面什么都没有?那里应该有一些预期的数据吗?你能告诉我们你正在加载的表格吗?
-
@rajkumars - 您应该编辑您的帖子,而不是将所有内容粘贴到评论中。我添加了您的表格 DDL 以及一些格式,但没有复制您的数据,因为它被截断了,我不想歪曲它。但是,如果不是敏感信息,您应该使用文件中的一两行来更新您的问题。
-
public.table是如何定义的?它有多少列? -
@LaurenzAlbe 早些时候刚刚给出了示例复制命令。现在我已经正确更改,我已经提到了我的测试数据和表格列在下面的外观
-
@rajkumars - 现在我正在查看“相关”下右侧的 9 个问题,它们都在问同样的问题。您是否阅读过其中任何一个以查看是否提到了您的解决方案?
标签: postgresql