繁体   English   中英

从csv的psql复制自动生成ID

[英]psql copy from csv automatically generating ids

考虑一下这样创建的表:

CREATE TABLE public.test
(
    id integer NOT NULL DEFAULT nextval('user_id_seq'::regclass),
    name text,
    PRIMARY KEY (id)
)

因此,该表具有唯一的“ id”列,该列使用序列自动生成默认值。

现在,我希望从csv文件导入数据,以扩展此表。 但是,“显然” id必须是唯一的,因此我希望让数据库本身生成ID,csv文件本身(来自完全不同的来源)因此为id提供了“空列”:

,username
,username2

但是,如果我随后使用psql导入此csv:

\copy public."user" FROM '/home/paul/Downloads/test.csv' WITH (FORMAT csv);

弹出以下错误:

ERROR:  null value in column "id" violates not-null constraint

那我该怎么做呢?

CSV文件中的空列被解释为SQL NULL,插入该值将覆盖DEFAULT并导致错误。

您应该忽略文件中的空列并使用:

\copy public."user"(name) FROM '...' (FORMAT 'csv')

然后,默认值将用于id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM