Для PostgreSQL 9.3 подготовлены полноценные средства для работы с JSON

В состав находящейся в разработке ветки СУБД PostgreSQL 9.3 включен набор средств для обработки данных в формате JSON. Если в ветке PostgreSQL 9.2 появилась поддержка типа данных JSON, обеспечивающего хранение данных в согласованном виде, то в PostgreSQL 9.3 появятся встроенные средства для преобразования и манипуляции данными в формате JSON.

Новые возможности можно разделить на две категории:

  • Функции для генерации данных в формате JSON из данных в других форматах: json_agg, to_json, hstore_to_json и hstore_to_json_loose;
       postgres=# create table aa (a bool, b text);   CREATE TABLE   postgres=# INSERT INTO aa VALUES (true, 'Hello "Darling"');   INSERT 0 1   postgres=# INSERT INTO aa VALUES (false, NULL);   INSERT 0 1     postgres=# SELECT to_json(a) AS bool_json, to_json(b) AS txt_json  FROM aa;   bool_json | txt_json   -----------+---------------------   true | "Hello \"Darling\""   false |   (2 rows)    postgres=# SELECT json_agg(aa) FROM aa;   json_agg   ---------------------------------------   [{"a":true,"b":"Hello \"Darling\""}, +   {"a":false,"b":null}]   (1 row)     postgres=# CREATE TABLE aa (id int, txt hstore);   CREATE TABLE   postgres=# INSERT INTO aa VALUES (1, 'f1=>t, f2=>2, f3=>"Hi", f4=>NULL');   INSERT 0 1   postgres=# SELECT id, txt::json, hstore_to_json(txt) FROM aa;   id | txt | hstore_to_json   ----+-----------------------------------+--------------------------------   1 | {"f1": "t", "f2": "2", "f3": "Hi", "f4": null} | {"f1": "t", "f2": "2", "f3": "Hi", "f4": null}   (1 row)  
     
  • Встроенные операторы и функции для обработки JSON-данных, позволяющие извлекать поля, менять отдельные значения, создавать записи на основе JSON-данных. В частности, для извлечения содержимого элементов JSON добавлены операторы "->", "->>", "#>" и "#>>".
        postgres=# SELECT b->>'f3' AS f1 FROM aa WHERE a = 1;   f1   ----------------   Hi I'm "Daisy"   (1 row)   postgres=# SELECT b->'f3' AS f1 FROM aa WHERE a = 1;   f1   --------------------   "Hi I'm \"Daisy\""   (1 row)  

Для тех, кто желает начать использовать новые возможности не дожидаясь выхода PostgreSQL 9.3, указанные функции портированы для PostgreSQL 9.2 и опубликованы в форме внешнего дополнения.

Источник:
http://www.opennet.ru/opennews/art.shtml?num=36700

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>