1、登陆数据库
psql -U postgres -d postgres
2、创建数据库hstore,并安装extension
create database hstore; create extension hstore;
3、建表
create table users( id serial, info hstore );
4、插入数据
insert into users values(1,'"name"=>"zhangsan","age"=>"20"');
5、查询数据
select info from users;
6、增加数据
update users set info = info || '"company"=>"Qunar"' :: hstore;
7、删除数据
update users set info = delete(info, 'company');
8、将key值转为set输出。
select skeys(info) from users;
9、将key值转为array输出。
select akeys(info) from users;
10、将value值转为set输出。
select svals(info) from users;
11、将value值转为array输出。
select avals(info) from users;
12、将hstore值转为array输出。
select avals(info) from users;
13、查询age为20的所有记录。
查询之前再入两条数据
insert into users values(1,'"name"=>"lisi","age"=>"20"'); insert into users values(1,'"name"=>"wangwu","age"=>"21"'); 查询 select * from users where info@'age=>20';
文档参考:http://www.postgresql.org/docs/current/static/hstore.html
提要:在本教程中,我们将向您展示如何使用 PostgreSQL HSTORE 数据类型。
hstore 模块实现了将键/值对
存储到单个值的 HSTORE
数据类型。注意,HSTORE
中的 键
和 值
都只能是字符串。
使用 HSTORE
数据类型之前,需要先启用 hstore 模块:
CREATE EXTENSION hstore;
HSTORE
数据类型的表CREATE TABLE books (
id serial primary key,
title VARCHAR (255),
attr hstore
);
INSERT INTO books (title, attr)
VALUES
(
'PostgreSQL 轻松学',
'"paperback" => "685",
"publisher" => "sjk66.com",
"language" => "简体中文",
"ISBN-13" => "1234567890123",
"weight" => "412 克"'
);
SELECT
attr -> 'ISBN-13' AS isbn
FROM
books;
SELECT
attr -> 'weight' AS weight
FROM
books
WHERE
attr -> 'ISBN-13' = '1234567890123'
UPDATE books
SET attr = attr || '"freeshipping"=>"yes"' :: hstore;
UPDATE books
SET attr = attr || '"freeshipping"=>"no"' :: hstore;
UPDATE books
SET attr = delete(attr, 'freeshipping');
HSTORE
字段是否包含某个键SELECT
title,
attr->'publisher' as publisher,
attr
FROM
books
WHERE
attr ? 'publisher';
SELECT
title
FROM
books
WHERE
attr @> '"weight"=>"412 克"' :: hstore;
SELECT
title
FROM
books
WHERE
attr ?& ARRAY [ 'language', 'weight' ];
SELECT
akeys (attr)
FROM
books;
或
SELECT
skeys (attr)
FROM
books;
SELECT
avals (attr)
FROM
books;
或
SELECT
svals (attr)
FROM
books;
SELECT
title,
hstore_to_json (attr) json
FROM
books;
SELECT
title,
(EACH(attr) ).*
FROM
books;
不知道能不能当hbase使用