我是PostgreSQL的新手。这是我想要实现的目标。我将获取一个json作为文本作为过程的输入,我需要在过程中解析它们以从中获取数据并将数据保存到表中。
以下是一个例子:
这是表格。
CREATE TABLE json_test2
(
id serial primary key,
name text,
age int
)
现在我正在尝试创建一个将文本作为包含json的输入的过程。
{
"data": [
{
"name": "kumar",
"age": 12
},
{
"name": "anand",
"age": 25
}
]
}
请创建一个符合我要求的程序
答案 0 :(得分:3)
为什么你需要proc,它只是Postgres功能:
INSERT INTO table_name (name, age)
SELECT (rec->>'name')::text , (rec->>'age')::integer FROM
json_array_elements('{ "data": [ { "name": "kumar", "age": 12 }, { "name": "anand", "age": 25 } ] }'::json->'data' ) rec
请参阅http://www.postgresql.org/docs/9.3/static/functions-json.html
PROC:
CREATE FUNCTION insert_from_json(in_json_txt json) RETURNS void AS
$BODY$
INSERT INTO table_name (name, age)
SELECT (rec->>'name')::text , (rec->>'age')::integer FROM
json_array_elements(in_json_txt->'data') rec
$BODY$
LANGUAGE sql