[英]Most efficient method to import bulk JSON data from different sources in postgresql?
我需要从数千个 URL 导入数据,以下是数据示例:
[{"date":"20201006T120000Z","uri":"secret","val":"1765.756"},{"date":"20201006T120500Z","uri":"secret","val":"2015.09258 "},{"date":"20201006T121000Z","uri":"secret","val":"2283.0885"}]
由于 COPY 不支持 JSON 格式,我一直使用它从一些 URL 导入数据:
CREATE TEMP TABLE stage(x jsonb);
COPY stage FROM PROGRAM 'curl https://.....';
insert into test_table select f.* from stage,
jsonb_populate_recordset(null::test_table, x) f;
但它效率低下,因为它为每次导入创建一个表,并且一次导入一个 url。 我想知道是否可以(通过工具、脚本或命令)读取包含所有 URL 的文件并将其数据复制到数据库中。
使用您的示例数据,您所要做的就是删除第一行的第一个字符,以及每行的最后一个可打印字符( 或]
) ,
然后它将与 COPY 兼容。 可能存在 JSON 会破坏它(由于格式或内容),但它们也会破坏您的示例替代代码。 如果您的示例代码确实有效,那么也许您永远不会遇到这样有问题的数据/格式,或者您可能还没有遇到它。
您可以添加一个处理步骤来删除那些讨厌的字符,或者您可以更改批量获取数据的方式(您没有描述)以避免首先输出它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.