psql 导入 csv 并生成 uuid
psql import csv and generate uuid
我正在尝试从 CSV 导入到 Postgres 并在导入期间生成一个 uuid uuid_generate_v4() 以填充 table.
Postgres 版本:14
Postgres Table
- 国家
- id(主键)
- country_name
- country_ISO_Code
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 ',')
我正在尝试从 CSV 导入到 Postgres 并在导入期间生成一个 uuid uuid_generate_v4() 以填充 table.
Postgres 版本:14
Postgres Table
- 国家
- id(主键)
- country_name
- country_ISO_Code
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 ',')