繁体   English   中英

如何在Postgresql 9.2中使用JSON插入数据

[英]How to insert data by using json in postgresql 9.2

我有两个表,分别称为bookauthor

create 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
           );

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

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

{
    "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数据解析为表?

(我使用的是PostgreSQL 9.2)。

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

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

看到:

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

与使用外部脚本进行的操作实际上并没有太大区别。


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM