如何在 PostgreSQL 中仅从 CSV 导入特定列

How to import only specific columns from CSV in PostgreSQL

PostgreSQL 版本:9.6

我有一个 table xyz,其中包含 a integerb integerc textd integer 列。

c 具有非空约束。

我的 CSV 文件如下所示:

foo.csv

1,4
2,5
3,7

如何通过导入上面的 CSV 来更新列 ad

我尝试了 COPY xyz (a,d) FROM '/foo.csv' DELIMITER ','; 但它给了我一个错误

ERROR: null value in column "c" violates not-null constraint DETAIL: Failing row contains (1, null, null, 4).

通常,not null 列应该定义一个默认值。您可以为现有列定义默认值,例如

alter table xyz alter c set default '';

之后复制命令就成功了