我有一个JSON文件C:\sensors\201802091904.json
。该数据文件与PostgreSQL安装在同一本地驱动器上。
以下是JSON的示例:
[
{"Data": " ** collection of property-value pairs ** }} ", "EventId": "", "Timestamp": ""},
{"Data": " ** collection of property-value pairs ** }} ", "EventId": "", "Timestamp": ""},
{"Data": " ** collection of property-value pairs ** }} ", "EventId": "", "Timestamp": ""}
]
Data
属性值是一个JSON对象,其中包含观察值以及有关传感器的数据。
我想将文件的内容加载到PostgreSQL 11表中。我想将Data属性值加载到JSON列类型中。如果可能的话,我想将诸如EventId
和Timestamp
之类的元属性加载到它们自己的列中,但是稍后我可以弄清楚。
我发现了this个示例,但没有产生我们想要的结果。 JSON的整个块最终都在一个字段中。我们需要将每个JSON对象{"Data": " ** collection of property-value pairs ** }} ", "EventId": "", "Timestamp": ""}
插入其自己的行中。
这是迄今为止最成功的尝试:
XXX =# \set content `type C:\sensors\201802091904.json`
XXX =# create table t2 ( j jsonb );
XXX =# insert into t2 values (:'content');
XXX =# select * from t2;
如何在Windows 10上的JSON 11中加载JSON文件?
答案 0 :(得分:0)
如果您成功地遵循了示例,则距离将jsonb数组扩展为几个简单的jsonb仅1步之遥:
CREATE TABLE T (j jsonb);
INSERT INTO T SELECT jsonb_array_elements(j)::jsonb FROM T2