[英]When using COPY FROM statement getting ERROR: null value in column “field_id” violates not-null constraint
我正在使用COPY FROM
命令從文件加載數據。 該表用標識列定義,該列不屬於文件。
CREATE TABLE APP2DBMAP (
FIELD_ID integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
FIELD_NAME varchar(128) ,
TABLE_NAME varchar(128) ,
COLUMN_NAME varchar(128) ,
CONSTRAINT PK_APP2DBMAP PRIMARY KEY ( FIELD_ID )
);
我執行了以下COPY FROM
命令,該文件在1行中包含3個值。
copy app2dbmap (field_name, table_name, column_name) from '/opt/NetMgr/data/templ_db.txt' DELIMITER ',' ;
我得到了以下錯誤:
ERROR: null value in column "field_id" violates not-null constraint
DETAIL: Failing row contains (null, 'aaa', 'bbb', 'ccc').
CONTEXT: COPY app2dbmap, line 1: "'aaa','bbb','ccc'"
我試圖將field_id
的列描述field_id
為serial
,並且工作正常。
我不明白為什么它不能與原始表定義一起使用。
問題是您已將field_id指定為非null值,因此當文件將null作為值傳遞時,就會出現錯誤。 如果您要使用自動增量ID,請使用,
CREATE TABLE APP2DBMAP (
FIELD_ID smallserial NOT NULL,
FIELD_NAME varchar(128) ,
TABLE_NAME varchar(128) ,
COLUMN_NAME varchar(128) ,
CONSTRAINT PK_APP2DBMAP PRIMARY KEY ( FIELD_ID )
);
您也可以使用bigserial(int4)代替smallint(int8)
或者您可以提供默認值,
CREATE TABLE APP2DBMAP (
FIELD_ID integer NOT NULL default 0,
FIELD_NAME varchar(128) ,
TABLE_NAME varchar(128) ,
COLUMN_NAME varchar(128) ,
CONSTRAINT PK_APP2DBMAP PRIMARY KEY ( FIELD_ID )
);
您將必須傳遞某些內容,而不能在非null列中傳遞null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.