簡體   English   中英

在 postgresql 中更新典型的 json

[英]Update typical json in postgresql

我有一個表,其中一列包含 json 格式,我正在嘗試更新該列但沒有運氣。請查看給定的查詢,任何幫助都會很明顯。

詢問

    update data_file
  set json_data = jsonb_set(json_data::jsonb,  '{"tables","li_daily_sales_ll"}'::text[],
      json_extract_path(json_data ->'tables', 'li_daily_sales_ll' )::jsonb, '{ada}', jsonb_build_object( '{adapartialcurrentperiod}','202001') ,true)
      where data_file_id = 475;

輸入 json

{
    "tables": {
        "li_daily_sales_ll": {
            "sourcedetails": {
                "sourceT": "Hive",
                "sourceconnection": "xxxxxxx.xxxxxxxxxx",
                "duplicateCheck": null,
                "targetN": null,
                "partitionName": null
            },
            "ada": {
                "adatype": "Partial",
                "adatargettablename": "xxxxxxx.xxxxxxxxxx",
                "adaprimarykeycols": null,
                "adafilter": null,
                "adahistorypartitioncols": "xxxxxxx",
                "adapartialcurrentperiod": 202003
            }
        }
    }
}

Output Json

{
    "tables": {
        "li_daily_sales_ll": {
            "sourcedetails": {
                "sourceT": "Hive",
                "sourceconnection": "xxxxxxx.xxxxxxxxxx",
                "duplicateCheck": null,
                "targetN": null,
                "partitionName": null
            },
            "ada": {
                "adatype": "Partial",
                "adatargettablename": "xxxxxxx.xxxxxxxxxx",
                "adaprimarykeycols": null,
                "adafilter": null,
                "adahistorypartitioncols": "xxxxxxx",
                "adapartialcurrentperiod": 202001
            }
        }
    }
}

似乎很簡單:

update data_file
  set json_data = jsonb_set(json_data::jsonb,
                            '{tables,li_daily_sales_ll,ada,adapartialcurrentperiod}'::text[],
                            '202001')
where data_file_id = 475;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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