PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Isi beberapa tabel dari satu objek JSON dengan json_populate_recordset

3 Langkah:

  1. Bidang akses objek JSON yang -> .
  2. Buat tabel turunan dari larik data JSON menggunakan json_populate_recordset() .
  3. Dekomposisi tipe baris untuk INSERT perintah.

Untuk menggunakan kembali nilai input untuk semua tabel, bungkus dalam CTE pemodifikasi data :

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
;

SQL Fiddle.

Menggunakan JOIN LATERAL implicit implisit . Terkait:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengikat variabel SQL di PHP?

  2. kesalahan:ALTER TYPE ... ADD tidak dapat berjalan di dalam blok transaksi

  3. Laravel 5.3 Transaksi fasih dan pembatasan kunci asing

  4. Menggunakan tabel sementara untuk menggantikan klausa WHERE IN

  5. Rel menunggu migrasi di rake db:test:prepare