postgres 9.3 でjson
postgres 9.3にはjsonがネィティブにサポートされている。json内の値をアクセスしたりインデックスできる。
psql (9.3.0)
Type "help" for help.# JSON型!
yoyodb=> CREATE TABLE publishers(id INT, info JSON);
CREATE TABLE# JSON型をインデックス!!
yoyodb=> CREATE INDEX ON publishers( ( info->>'name' ) ) ;
CREATE INDEXyoyodb=> insert into publishers (id,info) values (1, '{"name":"foo"}');
INSERT 0 1
yoyodb=> insert into publishers (id,info) values (2, '{"name":"bar"}');
INSERT 0 1
yoyodb=> insert into publishers (id,info) values (3, '{"name":"baz"}');
INSERT 0 1
yoyodb=> select * from publishers
yoyodb-> ;
id | info
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1 | {"name":"foo"}
2 | {"name":"bar"}
3 | {"name":"baz"}
(3 rows)
# col->'key'でJSON内のフィールドをアクセス
yoyodb=> select info->'name' from publishers ;
?column?
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
"foo"
"bar"
"baz"
(3 rows)
yoyodb=> select info from publishers where info->>'name'='bar';
info
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
{"name":"bar"}
(1 row)
yoyodb=> select info->'name' from publishers where info->>'name'='bar';
?column?
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
"bar"
(1 row)
debianでのインストール
http://www.postgresql.org/download/linux/ubuntu/
echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' | sudo tee
/etc/apt/sources.list.d/postgres.list
https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.3