簡體   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