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

PostgreSQL में बल्क/बैच अपडेट/अपर्ट

बल्क इंसर्ट

आप @Ketema द्वारा तीन कॉलम के बल्क इंसर्ट को संशोधित कर सकते हैं:

INSERT INTO "table" (col1, col2, col3)
  VALUES (11, 12, 13) , (21, 22, 23) , (31, 32, 33);

यह बन जाता है:

INSERT INTO "table" (col1, col2, col3)
  VALUES (unnest(array[11,21,31]), 
          unnest(array[12,22,32]), 
          unnest(array[13,23,33]))

प्लेसहोल्डर्स के साथ मानों को बदलना:

INSERT INTO "table" (col1, col2, col3)
  VALUES (unnest(?), unnest(?), unnest(?))

आपको इस क्वेरी के तर्क के रूप में सरणियों या सूचियों को पास करना होगा। इसका मतलब है कि आप स्ट्रिंग कॉन्सटेनेशन (और इसके सभी खतरों और खतरों:sql इंजेक्शन और नर्क को उद्धृत किए बिना) के बिना भारी मात्रा में सम्मिलित कर सकते हैं।

बल्क अपडेट

PostgreSQL ने FROM एक्सटेंशन को UPDATE में जोड़ा है। आप इसे इस तरह इस्तेमाल कर सकते हैं:

update "table" 
  set value = data_table.new_value
  from 
    (select unnest(?) as key, unnest(?) as new_value) as data_table
  where "table".key = data_table.key;

मैनुअल में एक अच्छी व्याख्या नहीं है, लेकिन postgresql-admin मेलिंग सूची पर एक उदाहरण है। मैंने इसके बारे में विस्तार से बताने की कोशिश की:

create table tmp
(
  id serial not null primary key,
  name text,
  age integer
);

insert into tmp (name,age) 
values ('keith', 43),('leslie', 40),('bexley', 19),('casey', 6);

update tmp set age = data_table.age
from
(select unnest(array['keith', 'leslie', 'bexley', 'casey']) as name, 
        unnest(array[44, 50, 10, 12]) as age) as data_table
where tmp.name = data_table.name;
 

StackExchange पर UPDATE...FROM.. . की व्याख्या करने वाली अन्य पोस्ट भी हैं VALUES . का उपयोग करके एक उपश्रेणी के बजाय खंड। वे पढ़ने में आसान हो सकते हैं, लेकिन पंक्तियों की एक निश्चित संख्या तक ही सीमित हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:क्वेरी का परिणाम डेटा के लिए कोई गंतव्य नहीं है

  2. अवलोकन के लिए PostgreSQL को कॉन्फ़िगर करना

  3. PostgreSQL 12 . के लिए डेटाबेस प्रबंधन और निगरानी

  4. अपने PostgreSQL इंडेक्स का अधिकतम लाभ उठाएं

  5. clojure.java.jdbc आलसी क्वेरी