将数组从表postgresql插入jsonb列

sczxawaw  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(233)

我正在尝试在jsonb列中创建一个insert语句,如下所示

"EmpNames": [
    {
      "id": "5680",
      "Surname": "James",
      "GivenName": "Julie",
      "MiddleName": "Jane",
    }
  ]

我的sql语句是

select    'EmpNames',   
                      Array[
                               'Surname', surname
                               'GivenName', first_name,
                               'MiddleName', middle_name
                            ]::jsonb[]      
from stg.employees

invalid input syntax for type json
                               'Surname' Token "Surname" is invalid.

Thanks
bakd9h0s

bakd9h0s1#

使用jsonb_build_object()创建一个json对象,使用jsonb_agg()将对象聚合到一个json数组:

select
    jsonb_build_object(
        'EmpNames',
        jsonb_agg(
            jsonb_build_object(
                'id', id,
                'surname', surname,
                'first_name', first_name,
                'middle_name', middle_name
            )
        )
    )
from employees

db<>fiddle.中测试
如果要分别为每个id创建一个json对象,则查询不需要聚合:

select
    jsonb_build_object(
        'EmpNames',
        jsonb_build_array(
            jsonb_build_object(
                'id', id,
                'surname', surname,
                'first_name', first_name,
                'middle_name', middle_name
            )
        )
    )
from employees

Db<>fiddle.

相关问题