考虑一下这样创建的表:
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
那我该怎么做?
答案 0 :(得分:0)
CSV文件中的空列被解释为SQL NULL,插入该值将覆盖DEFAULT
并导致错误。
您应该忽略文件中的空白列,并使用:
\copy public."user"(name) FROM '...' (FORMAT 'csv')
然后默认值将用于id
。