微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 postgresql 中从不同来源导入批量 JSON 数据的最有效方法?

如何解决在 postgresql 中从不同来源导入批量 JSON 数据的最有效方法?

我需要从数千个 URL 中导入数据,这里是一个数据示例:

[{"date":"20201006T120000Z","uri":"secret","val":"1765.756"},{"date":"20201006T120500Z","val" :"2015.09258"},{"date":"20201006T121000Z","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 可能会破坏它(由于格式或内容),但它们也会破坏您的示例替代代码。如果您的示例代码确实有效,那么您可能永远不会遇到如此有问题的数据/格式,或者您可能还没有遇到它。

您可以添加一个处理步骤来删除那些令人讨厌的字符,或者您可以更改批量获取数据的方式(您没有描述)以避免首先输出它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。