2015-10-20 59 views
0

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

以下是一个示例:

这是表格。

CREATE TABLE json_test2 
    (
     id serial primary key, 
     name text, 
     age int 
    )  

现在我试图创建一个程序,将文本作为包含json的输入。

{ 
     "data": [ 
      { 
       "name": "kumar", 
       "age": 12 
      }, 
      { 
       "name": "anand", 
       "age": 25 
      } 
     ] 
    } 

请创建一个进程,将满足我的要求

回答

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 
+0

非常感谢你..这真的很有用 –

+0

如果我有相同的xml数据,你可以请分享相同的信息为XML吗?我们如何解析它并插入数据库? –