2015-10-20 86 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嗎?我們如何解析它並插入數據庫? –