PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

json_populate_recordset के साथ एक JSON ऑब्जेक्ट से एकाधिक तालिकाओं को पॉप्युलेट करें

3 कदम:

  1. JSON ऑब्जेक्ट का एक्सेस फ़ील्ड जिसमें ->
  2. json_populate_recordset()
  3. INSERT के लिए पंक्ति-प्रकार को विघटित करें आदेश।

सभी तालिकाओं के लिए इनपुट मान का पुन:उपयोग करने के लिए, इसे डेटा-संशोधित सीटीई :

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.

निहित JOIN LATERAL का उपयोग करना . संबंधित:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज:त्रुटि:टाइप कैरेक्टर के लिए बहुत लंबा मान (255) फ़ील्ड निर्दिष्ट नहीं करता है

  2. Django और PostgreSQL को दो अलग-अलग EC2 उदाहरणों पर सेट करना

  3. क्या एक चर का उपयोग करना संभव है और पोस्टग्रेएसक्यूएल में रिटर्न प्रकार निर्दिष्ट नहीं करना है?

  4. PostgreSQL डेटाबेस बनाना

  5. PostgreSQL में सभी डेटाबेस का सार्वजनिक स्कीमा क्यों है?