PostgreSQL 9.1でJSON型を使う¶
次にリリースされるPostgreSQL 9.2からは JSON型 が組み込みでサポートされる 予定です。
JSON型のインストール¶
JSON型は9.2からなのですが、Andrew さんが9.1でも動くようにする拡張を公開してくださっています。
https://bitbucket.org/adunstan/json_91
(bitbucketですがgitです)
% git clone https://bitbucket.org/adunstan/json_91.git
% cd json_91
% make
% make install
さて、これで拡張が入りましたので、これをdatabaseに入れます。
% createdb json
% psql json -c "CREATE EXTENSION json;"
これで準備は終わりです。さっそく使ってみましょう。
INSERT JSON¶
まずはテーブル定義です。普通にJSON型を定義できます。
CREATE TABLE json_table (
id bigserial primary key,
value json
)
;
まずは INSERT です。
INSERT INTO json_table(value) VALUES
('{"name":"rudi", "age": 24, "fav": ["python", "emacs", "postgresql"]}');
取得には json_out という関数を使います。
SELECT json_out(value) FROM json_table;
json_out
-------------------------------------------------------------------
{"name":"rudi", "age": 24, "fav": ["python", "emacs", "postgresql"]}
他にはarray_to_json、row_to_jsonもあります。
SELECT array_to_json(ARRAY[1,2,3]);
array_to_json
---------------
[1,2,3]
SELECT row_to_json(row(1,2,'hoge'));
row_to_json
-----------------------------
{"f1":1,"f2":2,"f3":"hoge"}
WHEREとかどう書くの?¶
さて、では次はWHERE句を使ってJSONの中身を絞ったり、インデックスを張る、 とかいいたいとろですが、実は9.2単体ではJSON型はバリデーションとJSONの構 築しか出来ず、そのままではできません。
これにはPostgreSQLの拡張である、 plv8js を使います。
が、それはまた次回…
Comments
comments powered by Disqus