Как изменить разделитель по умолчанию для массивов postgresql?

#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;