Postgres polygon array - правильный формат insert-а
У меня есть таблица со столбцом типа polygon[] . insert в поля типа polygon делаю так:
INSERT INTO TABLES test (p_field) VALUES ('((0,0),(1,0),(1,1), (0,0))');
Успешно. Но в поля типа polygon [] не могу понять, в каком формате подавать данные. Пробовала так:
'{( (0, 0), (1, 0), (1, 1), (0, 0) ), ( (0, 0), (5, 0) ,(0, 1) , (0, 0) )}'
'{'( (0, 0), (1, 0), (1, 1), (0, 0))', '((0, 0), (5, 0), (0, 1), (0, 0) )'}'
... и еще по всякому по-разному, но каждый раз все равно ругается на неправильный формат. Не нашла никакой информации в сети. Может быть кто-то сталкивался и знает, как их правильно скармливать?
Ответы (1 шт):
polygon[] - это массив и N элементов типа polygon. Поэтому сперва формируете данные формата, подходящего для polygon
Затем формируете массив из них же:
INSERT INTO test (p_field) VALUES (array[
'((0, 0), (1, 0), (1, 1), (0, 0))',
'((0, 0), (5, 0), (0, 1), (0, 0))'
]::polygon[]);
Либо строковым литералом, в котором согласно формату массивов используются кавычки:
INSERT INTO test (p_field) VALUES ('{"((0, 0), (1, 0), (1, 1), (0, 0))", "((0, 0), (5, 0), (0, 1), (0, 0))"}');
Пример синтаксиса строкового литерала можно в общем-то попросить показать саму базу:
create temp table test (p_field polygon);
INSERT INTO test (p_field) VALUES ('((0,0),(1,0),(1,1), (0,0))');
select array_agg(p_field) from test;