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