如何在postgresql 9.2中使用json插入数据

时间:2015-09-08 12:59:58

标签: postgresql

我有两个名为authorcreate table book(bookid BIGSERIAL, bookname VARCHAR, book_type VARCHAR, book_pub_date DATE ); create table Author(Authorid BIGSERIAL, Authorname VARCHAR, Author_emailadddr VARCHAR, Author_phone integer ); 的表。

{
    "bookid" : "1",
    "bookname" : "sample book",
    "book type" : "history",
    "book_pub_date" : "2015-09-08",
    "Author" : [{
            "Authorname" : "xyz",
            "Author_emailadddr" : "xyz@gmail.com",
            "Author_phone" : "080-99978754"
        }
    ]
}

应用程序将通过存储的函数传递JSON格式的数据。 那么如何将JSON数据存储到表中呢?

输入数据(应用程序将通过存储的函数传递以下数据):

settingsButton =[UIButton buttonWithType:UIButtonTypeCustom];
settingsButton.frame= CGRectMake(SCREEN_WIDTH-[UIImage imageNamed:@"setting.png"].size.width-30, 22, [UIImage imageNamed:@"setting.png"].size.width, [UIImage imageNamed:@"setting.png"].size.height);
[settingsButton setImage:[UIImage imageNamed:@"setting.png"] forState:UIControlStateNormal];
[settingsButton addTarget:self action:@selector(settingButtonMethod) forControlEvents:UIControlEventTouchUpInside];
[settingsButton setMultipleTouchEnabled:NO];
settingsButton.exclusiveTouch=YES;
settingsButton.backgroundColor=CLEAR_COLOR;
[self.view addSubview:settingsButton];

是否可以将json数据解析为表?

(我正在使用PostgreSQL 9.2)。

2 个答案:

答案 0 :(得分:0)

我认为你可能需要Postgres 9.3+来获得纯粹的SQL解决方案。与较新版本相比,9.2具有有限的json功能。 http://www.postgresql.org/docs/9.2/static/functions-json.html

答案 1 :(得分:0)

在PostgreSQL 9.2中,您需要使用pl / perl,pl / python等编写的函数,使用该语言的相关JSON解码支持,然后使用SPI将提取的数据插入表中。使用,例如Python的json模块或Perl的JSON模块提取字段,然后相关的SPI调用创建SQL以根据提取的数据进行插入。

请参阅:

特别要注意plperl和plpython文档中与数据库交互和运行查询的部分。

使用外部脚本执行此操作确实没什么不同。

在PostgreSQL 9.4及更高版本中,您可以开始使用PostgreSQL自己的json support来提取pl / pgsql和insert中提取部分的json部分。不再需要plperl或plpython。