Postgresql

如何將 json 插入表中並使某些列保持 json

  • May 26, 2020

我想將數據插入表中,其中第一級鍵作為值而不是 json 插入。雖然列“p_attribute”需要儲存嵌套的 json。例如,對於 Jane Doe,我希望她的屬性列如下所示:

想要的查詢結果

我只能通過更新列 p_attribute 來實現這一點:

update json_table
set p_attribute =(
   '{
   "p_attribute": {
   "age": "37",
   "eye_color": "blue",
   "favourite_qoute": "I am the classic example"
   }
   }'
)

現在我想在一個插入中創建上面的圖片,如下所示:

insert into json_table
select * from json_populate_recordset (NULL::json_table,
   '[{
   "p_id": 1,
   "first_name":   "Jane",
   "last_name":    "Doe",
   "p_attributes": {
       "age": "37",
       "eye_color": "blue",
       "favourite_qoute": "I am the classic example"
       }
   }]';

但是我執行了這個插入,然後 p_attribute 列得到一個空值,但是其餘的列被正確插入:

Json 列為空

我使用 PostgreSQL 12,我的表如下所示:

create table json_table (
   p_id int primary key,
   first_name varchar(20),
   last_name varchar(20),
   p_attribute json
)  

json格式的實際列名“p_attribute”和鍵“p_attributes”不同……

引用自:https://dba.stackexchange.com/questions/267917