बल्क इंसर्ट
आप @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
. का उपयोग करके एक उपश्रेणी के बजाय खंड। वे पढ़ने में आसान हो सकते हैं, लेकिन पंक्तियों की एक निश्चित संख्या तक ही सीमित हैं।