簡體   English   中英

從 postgresql 中的不同來源導入批量 JSON 數據的最有效方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM