Postgre SQL Gyakorlat 2015.02.11 - parancsok: ################################################# #Set environment to connect to PostgreSQL ################################################# export PGDATA=/etc/postgresql/9.4/main export PATH=$PATH:/usr/lib/postgresql/9.4/bin ################################################# #Get status info about postmaster ################################################# postgres@athosnak:/tmp/Postgres_json$ /etc/init.d/postgresql status 9.4/main (port 5432): online ################################################# #Look inside the data directory ################################################# cd /var/lib/postgresql/9.4/main cat postmaster.pid cat postmaster.opts ################################################# #Login to postgres db ################################################# psql select version(); show all; show wal_level \q ################################################# #Create db to play on ################################################# createdb hotels psql -d hotels ################################################# #Load data ################################################# \i /tmp/Postgres_json/hotels_example.sql hotels=# \d hotels select * from hotels; \i /tmp/Postgres_json/hotels_example_rdbms.sql ################################################# #Play with json operators ################################################# SELECT '[1, 2, "foo", null]'::json; SELECT '{"bar": "baz", "balance": 7.77, "active": false}'::json; SELECT '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::json; SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::json; SELECT '"foo"'::jsonb @> '"foo"'::jsonb; SELECT '"foo"'::jsonb @> '"f"'::jsonb; SELECT '[1, 2, 3]'::jsonb @> '[1, 3]'::jsonb; ################################################# Explain plan ################################################# explain select * from hotels; ################################################# # Using GIN indexes ################################################# explain select data->'name' from hotels where data @>'{"state":"MP"}'; analyze hotels; create index idxgin on hotels using gin (data); analyze hotels; explain select data->'name' from hotels where data @>'{"state":"MP"}'; ################################################# #Query json data ################################################# select count(*) from hotels where (data->> 'free')::int < 2; select count(*) from hotels_rdbms where free<2; select data->'state', count(*) from hotels group by data->'state'; select state, count(*) from hotels_rdbms group by state; select data->'state', count(*) from hotels where (data->>'pets') = 'true' group by data->'state'; select max((data->>'free')::int) from hotels; select data->'name' from hotels where (data->>'pets') = 'true' and (data->>'parking') = 'true' and (data->>'free')::int>=195; select count(*) from hotels where (data->>'pets')::text = 'true' and (data->>'parking')='true' and (data->>'free')::int<(select avg ((data->>'free')::int) from hotels); select count(*) from hotels_rdbms where pets='true' and parking='true' and free <(select avg(free)::int from hotels_rdbms);