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