psql 导入 csv 并生成 uuid

psql import csv and generate uuid

我正在尝试从 CSV 导入到 Postgres 并在导入期间生成一个 uuid uuid_generate_v4() 以填充 table.

Postgres 版本:14

Postgres Table

Psql导入

\copy "Country" (select uuid_generate_v4() as "id", "country_name", "country_ISO_code") FROM 'C:\Users\.......\data.csv' (format csv, header, delimiter ',')

但是,这会引发错误 \copy: parse error at "as"

如何正确地指示 psql 使用 uuid_generate_v4() 作为 id 列?

提前致谢

您不能从 select 语句“复制”。您需要为主键定义一个默认值:

create table country
(
  id uuid primary key default gen_random_uuid(),
  country_name text not null,
  country_iso_code text not null
);

然后告诉\copy命令你的输入文件只包含两列:

\copy country (country_name, country_iso_code) from 'data.csv' (format csv, header, delimiter ',')