[英]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.