Parsing JSON in Postgresql
Say we have a table called person
with the following structure
---------------------------
column| datatype
---------------------------
_id | autonumber
name | text
age | integer
---------------------------
We want to insert multiple records into the table using a stored procedure. If we have a stored procedure with say two input variables name
and age
, then it will take multiple calls. We can do this using a single call if we use a json input and using the json_to_recordset
function.
CREATE OR REPLACE FUNCTION public.ins_person(
json)
RETURNS void
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
BEGIN
insert into person(name, age)
select x.name, x.age from json_to_recordset($1) x
(
name text,
age int
);
END;
$BODY$;
We test it out with the following JSON
[
{"name": "Albert E", "age": "20"},
{"name": "Ramanujam", "age": "27"}
]
Lets execute the stored procedure:
SELECT public.ins_person(
'[
{"name": "Albert E", "age": "20"},
{"name": "Ramanujam", "age": "27"}
]'
);
This will insert couple of rows into the person
table.
That’s it.
Other postgresql articles