#postgresql
#postgresql
Вопрос:
Я хочу импортировать csv с массивами Postgres в таблицу Postgres.
Это моя таблица:
create table dbo.countries (
id char(2) primary key,
name text not null,
elements text[]
CONSTRAINT const_dbo_countries_unique1 unique (id),
CONSTRAINT const_dbo_countries_unique2 unique (name)
);
и я хочу вставить в него csv, который выглядит следующим образом:
AC,ac,{xx yy}
Когда я набираю, copy dbo.mytable FROM '/home/file.csv' delimiter ',' csv;
тогда массив считывается как одна строка: {"xx yy"}
.
Как изменить разделитель по умолчанию для массивов с ,
на
?
Комментарии:
1. Вам пришлось бы создать свой собственный тип массива ( postgresql.org/docs/current/sql-createtype.html ). «delimiter Символ-разделитель, который будет использоваться между значениями в массивах, созданных этого типа». Я никогда этого не делал, так что это все, что я могу сделать.
Ответ №1:
Вы не можете изменить символ разделителя массива. Вы можете считывать данные в таблицу, а позже запускать обновление для этой таблицы:
UPDATE dbo.countries
SET elements = string_to_array(elements[1], ' ')
WHERE strpos(elements[1], ' ') > 0;