postgresql 存储过程输入json解析

bha*_*ddy 1 json stored-procedures postgresql-9.3

我是 PostgreSQL 的新手。这就是我想要实现的目标。我将获得一个 json 作为文本作为过程的输入,我需要在过程中解析它们以从它们获取数据并将数据保存到表中。

下面是一个例子:

这是桌子。

    CREATE TABLE json_test2
    (
      id serial primary key,
      name text,
      age int
    )     
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试创建一个过程,它将文本作为包含 json 的输入。

    {
        "data": [
            {
                "name": "kumar",
                "age": 12
            },
            {
                "name": "anand",
                "age": 25
            }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

请创建一个满足我要求的过程

Val*_*l K 5

为什么需要 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
Run Code Online (Sandbox Code Playgroud)

http://www.postgresql.org/docs/9.3/static/functions-json.html

过程:

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 
Run Code Online (Sandbox Code Playgroud)