Thread: json select question

json select question

From
CS DBA
Date:

All;


I'm working with a client running postgres 9.2, they have a table with a "json_data_string" column of type json


the data looks something like this with lots of rows for each (i.e. lots of json_data_string->book_name rows, lots of json_data_string->catalog_name rows, etc:

'{ "book_name": "Book the Fourth", "author": { "first_name": "Charles", "last_name": "Davis" } }'
'{ "catalog_name": "Catalog the Fourth", "author": { "first_name": "Charles", "last_name": "Davis" } }'
'{ "magazine_name": "mag4", "author": { "first_name": "Charles", "last_name": "Davis" } }'
'{ "category_name": "region", "author": { "first_name": "Charles", "last_name": "Davis" } }'


How can i pull a unique list of all json column names? such as book_name, catalog_name, etc

Thanks in advance

Re: json select question

From
John R Pierce
Date:
On 9/21/2016 4:54 PM, CS DBA wrote:
How can i pull a unique list of all json column names? such as book_name, catalog_name, etc

try json_object_keys() ... https://www.postgresql.org/docs/current/static/functions-json.html

but this will only pull the top level keys, like (from the first row of your example) , book_name, author... it won't pull out any second level fields like first_name, last_name.

you'll likely need to run this on all rows, and do a group by to get what you need.

thats a pretty messy way of storing data, btw, and not very relational, having a key name indicate a record type, and tossing all the record types into the same table.


-- 
john r pierce, recycling bits in santa cruz

Re: json select question

From
"FarjadFarid\(ChkNet\)"
Date:

 

This is probably the start of your quest into this project. No doubt you’ll need to handle other queries.

 

So my suggestion is first to rationalise the data storage before digging any deeper.

 

 

 

From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of CS DBA
Sent: 22 September 2016 00:54
To: pgsql-general <pgsql-general@postgresql.org>
Subject: [GENERAL] json select question

 

All;

 

I'm working with a client running postgres 9.2, they have a table with a "json_data_string" column of type json

 

the data looks something like this with lots of rows for each (i.e. lots of json_data_string->book_name rows, lots of json_data_string->catalog_name rows, etc:

'{ "book_name": "Book the Fourth", "author": { "first_name": "Charles", "last_name": "Davis" } }'
'{ "catalog_name": "Catalog the Fourth", "author": { "first_name": "Charles", "last_name": "Davis" } }'
'{ "magazine_name": "mag4", "author": { "first_name": "Charles", "last_name": "Davis" } }'
'{ "category_name": "region", "author": { "first_name": "Charles", "last_name": "Davis" } }'
 
 
How can i pull a unique list of all json column names? such as book_name, catalog_name, etc
 
Thanks in advance