Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在postgresql中从不同来源导入大量JSON数据的最有效方法?_Database_Postgresql_Bulkinsert_Postgresql Copy_Postgresql 13 - Fatal编程技术网

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

Database 在postgresql中从不同来源导入大量JSON数据的最有效方法?,database,postgresql,bulkinsert,postgresql-copy,postgresql-13,Database,Postgresql,Bulkinsert,Postgresql Copy,Postgresql 13,我需要从数千个URL导入数据,以下是数据示例: [{“日期”:“20201006T120000Z”,“uri”:“机密”,“val”:“1765.756”},{“日期”:“20201006T120500Z”,“uri”:“机密”,“val”:“2015.09258”},{“日期”:“20201006T121000Z”,“uri”:“机密”,“val”:“2283.0885”}] 因为COPY不支持JSON格式,所以我一直使用它从一些URL导入数据: CREATE TEMP TABLE stage

我需要从数千个URL导入数据,以下是数据示例:

[{“日期”:“20201006T120000Z”,“uri”:“机密”,“val”:“1765.756”},{“日期”:“20201006T120500Z”,“uri”:“机密”,“val”:“2015.09258”},{“日期”:“20201006T121000Z”,“uri”:“机密”,“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的文件并将其数据复制到数据库中。

对于示例数据,您只需删除第一行的第一个字符,以及每行的最后一个可打印字符(无论是
还是
]
),然后它将与复制兼容。JSON可能会破坏这一点(由于格式或内容),但它们也会破坏您的示例替代代码。如果您的示例代码确实有效,那么您可能永远不会有如此有问题的数据/格式,或者您可能还没有遇到它


您可以添加一个处理步骤来删除这些讨厌的字符,也可以更改批量获取数据的方式(您没有描述),以避免一开始就输出它们。

感谢您提供的数据格式帮助!关于数据获取,我仍然不确定是否应该使用脚本编写包含所有URL的psql命令,或者是否有一个工具可以从许多(数千)URL源获取数据,希望您也能帮助我。