[英]How to insert data by using json in postgresql 9.2
我有两个表,分别称为book
和author
。
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.