簡體   English   中英

PostgreSQL-將數據從jsonb數組移到單獨的表

[英]PostgreSQL - Move data from jsonb array to separate table

在我的PostgreSQL數據庫中,我具有以下架構:

CREATE TABLE slides (
    id integer,
    question jsonb DEFAULT '{}'::jsonb
);

CREATE TABLE suggestions (
    id integer,
    slide_id integer,
    suggestion_text text
);


INSERT INTO slides (id, question)
  VALUES (1, '{"suggestions": ["Suggestion 1", "Suggestion 2"]}');

現在,我想將question->>'suggestions'移至suggestions表。 所以

SELECT * FROM suggestions; 應該返回:

------------------------------------------------------------------
id     | suggestion_test   | slide_id
------------------------------------------------------------------
1      | Suggestion 1      | 1     
2      | Suggestion 2      | 1   

如何在PostgreSQL中做到這一點? 這是您可以嘗試使用的DBfiddle: https ://www.db-fiddle.com/f/oEQf7ntttV5Wu9wyiXbEFk/0

您可以使用jsonb_array_elements()

select jsonb_array_elements(question->'suggestions')
from slides;

我認為列suggestions.id應該是serial

CREATE TABLE suggestions (
    id serial,
    slide_id integer,
    suggestion_text text
);

使用函數jsonb_array_elements_text()

insert into suggestions(slide_id, suggestion_text)
select 
    id as slide_id, 
    value as suggestion_text
from slides
cross join jsonb_array_elements_text(question->'suggestions');

DbFiddle。

暫無
暫無

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

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