【发布时间】:2016-09-08 11:07:34
【问题描述】:
我有一些需要在表格中更新的数据。我正在使用 pgadmin3 导入工具 csv GUI。 我的问题是如何设置导入设置。
数据结构非常糟糕,列名如"width, inside" integer,我对此无能为力。
我可以忽略列名引号内的逗号 (,) 吗?
我得到的错误是
"ERROR: invalid input syntax for integer: ""
CONTEXT: COPY mytable, line 2, column width integer, inside: ""
所以它以我尽量避免的方式解释引号内的逗号。
额外: 我将 '\N' 放在 NULL 选项中,因为 csv 文件中的许多记录都是空的,例如 ""、""、""、...
CSV 文件和表结构片段
create table a (
"Width, inside" integer,
"Area" character varying(50),
"Year" date
)
"width, inside", "Area", "Year"
"3","sub",""
【问题讨论】:
-
对列名使用双引号
-
发布 csv 文件的第一行。
-
您的问题不是列名,看来它已经被很好地引用了。您的其中一行包含该列的空值
"",它不是有效的整数。 (注意:\N是text格式中的默认NULL值,但是在CSV格式中,未加引号的空字符串将默认变为NULL;您可以使用NULL选项更改行为COPYcommand)。 -
是的,你是对的,就是这样。但是,我不清楚如何将 emtyp 空整数设置为默认值而不是空文本值“”。结果比我希望的要复杂。
-
请提供您尝试执行的
COPY语句以及 CSV 中的一些示例行(以及标题)。如果您使用CSV格式进行复制,您应该尝试使用类似,,,"data",,234,,,,的行(注意逗号之后:每个相邻的逗号之间会有一个SQLNULL)。
标签: postgresql csv import