psql импортирует csv и генерирует uuid

#postgresql #csv #psql

#postgresql #csv #psql

Вопрос:

Я пытаюсь импортировать из CSV в Postgres и сгенерировать uuid, uuid_generate_v4(), во время импорта для заполнения таблицы.

Версия Postgres: 14

Таблица Postgres

  • Страна
    • идентификатор (первичный ключ)
    • название страны
    • Код страны_из_кода

Импорт 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() в качестве столбца идентификатора?

Заранее спасибо

Ответ №1:

Вы не можете скопировать «из» оператора 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 ',')