Как работать с Типом ARRAY в PostgreSQL

Marxy

Новичок
Как работать с Типом ARRAY в PostgreSQL

Надо писать и читать int[] в таблицах.
Ьожет куда-то не туда смотрел, но обнаружил, что в
функциях pg_* нет поддержки.

Т.е.
$x = array(array(2,3), array(4,5));
pg_insert($c, 'table', 'value'=>$x);

не работает.
Приходится сначала писать код для преобразования
$x в строку типа {{...},{...}}

Соотвественно, при чтении из таблицы
$x = pg_select($c, 'table');
$x[0][value] - у нас получается строка, которую
тоже приходится хитромудро преобразовывать в массив.

Кто еще сталкивался, какие есть решения?
Может я просто доку недокопал?
 

[DAN]

Старожил PHPClub
Сталкивался. Решения не нашел, поэтому отказался от этого типа данных.
А откуда появилась такая потребность использовать массивы в БД?
 

Marxy

Новичок
Согласен. Потребность редкая, но имеется.
Например хранить нетипизированные показания датчиков.
 

[DAN]

Старожил PHPClub
>писать и читать int[]
почему же нетипизированные? :)

Я вижу как минимум 2 пути решения.
1) Нормализация форм. Выносишь показания данных в отдельную таблицу и внешним ключом связываешь их с датчиком.

2) Несколько кривоват, но шустрый "в исполнении". Сериализуешь показания датчиков вместо запихивания их в массив и сохраняешь вместе с датчиком.
 

neko

tеam neko
Marxy
насколько я помню, они туда-сюда так и передаются.
как скобочки с запятыми..

и вообще массивы слегка недоделанны.

как вариант, можешь как-нибудь преобразовывать их на сервере, незнаю правда, поможет ли это.
 
Сверху