如何将postgres jsonb字段的属性插入键值表?

问题描述 投票:0回答:1

我想将jsonb值转换为单个语句中的键值表

我的示例代码:

CREATE TABLE public.searchdatacache
( querysig text, "values" jsonb );
INSERT INTO searchdatacache (querysig, values)
VALUES 
(
'ytApiSearch://Armageddon trailer',
'[
  {"VideoId"      : "xwseawq"},
  {"Title"        : "Armageddon"},
  {"PublishedAt"  : "2012/01/01"},
  {"Description"  : "Armageddon is a film"},
  {"ChannelTitle" : "Bruce Willis Movies"}
]'
)

SELECT jsonb_array_elements(values) from searchdatacache where querysig =    'ytApiSearch://Armageddon trailer'

收益:

"{"VideoId": "xwseawq"}"
"{"Title": "Armageddon"}"
"{"PublishedAt": "2012/01/01"}"
"{"Description": "Armageddon is a film"}"
"{"ChannelTitle": "Bruce Willis Movies"}"

select语句返回的数据到目前为止看起来还不错,但现在我想在“INSERT INTO”语句中使用这个select语句来填充键值表。

这些记录应填入新的键值表:

VideoId      | xwseawq
Title        | Armageddon
PublishedAt  | 2012/01/01
Description  | Armageddon is a film
ChannelTitle | Bruce Willis Movies

提前感谢杰拉尔德

postgresql select key-value jsonb
1个回答
1
投票

jsonb_array_elements子句中使用from以及jsonb_each_text来准备插入键值对。

select s.key,s.value
       from searchdatacache cross join lateral
             jsonb_array_elements(values) as j(e)
    cross join lateral jsonb_each_text(j.e) as s(key,value);

Demo

© www.soinside.com 2019 - 2024. All rights reserved.