3 bước:
- Trường truy cập của đối tượng JSON wich
->
. - Tạo bảng dẫn xuất từ mảng bản ghi JSON bằng cách sử dụng
json_populate_recordset()
. - Phân tách loại hàng cho
INSERT
lệnh.
Để sử dụng lại giá trị đầu vào cho tất cả các bảng, hãy bọc nó trong CTE sửa đổi dữ liệu :
WITH input AS (
SELECT '{
"tablename_a":[{"a_id":1,"b_id":2,"c_id":3},
{"a_id":2,"b_id":51,"c_id":3}],
"tablename_b":[{"b_id":2,"name":"John Doe", "z_id":123},
{"b_id":51,"name":"Mary Ann", "z_id":412}],
"tablename_c":[{"c_id":3, "OS type":"Windows 7"}],
"tablename_z":[{"z_id":123, "Whatever":"Something"},
{"z_id":123, "Whatever":"Something else"}]
}'::json AS j
)
, a AS (
INSERT INTO tablename_a
SELECT t.*
FROM input i
, json_populate_recordset(NULL::tablename_a, i.j->'tablename_a') t
)
, b AS (
INSERT INTO tablename_b
SELECT t.*
FROM input i
, json_populate_recordset(NULL::tablename_b, i.j->'tablename_b') t
)
-- ... more ...
INSERT INTO tablename_z
SELECT t.*
FROM input i
, json_populate_recordset(NULL::tablename_z, i.j->'tablename_z') t
;
Sử dụng JOIN LATERAL
ngầm định . Có liên quan: