मैं एक अनाम plpgsql कोड ब्लॉक के भीतर लूप का उपयोग करके विभाजन के लिए बड़ी संख्या में बड़ी फ़ाइलों की एक बड़ी संख्या में आयात कर रहा हूं $do$
।
$do$
BEGIN
FOR yyyy in 2012..2016 THEN
EXECUTE $$COPY table$$||yyyy||$$ FROM 'E:\data\file$$||yyyy||$$.csv DELIMITER ',' CSV;$$;
END LOOP;
END;
$do$ LANGUAGE plpgsql
इस पूरी प्रक्रिया में लगभग 15 घंटे का समय लगना चाहिए और मुझे उम्मीद है कि किसी बिंदु पर आयात त्रुटि होने पर सभी आयात वापस नहीं किए जाएंगे।
IIRC COMMIT
संग्रहीत कार्यों के भीतर काम नहीं करता है, संपूर्ण फ़ंक्शन को एक ही लेनदेन के रूप में माना जाता है।
के लिए प्रलेखन से$do$
कोड ब्लॉक के रूप में माना जाता है, क्योंकि यह बिना किसी पैरामीटर के एक फ़ंक्शन का शरीर था, जो शून्य है। इसे एक ही बार में पार्स और निष्पादित किया जाता है।
मैं मान रहा हूं कि इसका मतलब है कि पूरा $do$
एक लेन-देन है, और इसलिए ब्लॉक के भीतर काम नहीं करेगा। क्या मैं सही हूँ?
BEGIN
याCOMMIT
फ़ंक्शन बॉडी में। आपको एक अपवाद मिलेगा, क्योंकि इसकी अनुमति नहीं है (संभव नहीं है)।