SQL के साथ यह संभव नहीं है COPY
आज्ञा। COPY
केवल एक फ़ाइल . से कॉपी करता है या STDIN ।
आप या तो वेरिएबल की सामग्री को फ़ाइल में लिख सकते हैं या इसे एसटीडीआईएन के माध्यम से पाइप कर सकते हैं। केवल दो पंक्तियों से अधिक के लिए समझ में आता है।
मुझे लगता है कि मैंने अपडेट से पहले आपके प्रश्न को गलत समझा, शायद आपको इसकी आवश्यकता नहीं है:
फ़ाइल पथ को अन्य डेटा आइटम की तरह आदान-प्रदान नहीं किया जा सकता है, और आप उसके लिए तैयार कथन का उपयोग नहीं कर सकते हैं। संपूर्ण बनाएं सर्वर-साइड फ़ंक्शन के साथ डायनेमिक SQL को निष्पादित या सहारा लेने से पहले स्टेटमेंट:
CREATE OR REPLACE FUNCTION f_cp(_file text)
RETURNS void AS
$BODY$
BEGIN
EXECUTE format($$COPY zip_codes FROM %L DELIMITER ',' CSV$$, $1);
END
$BODY$
LANGUAGE plpgsql;
कॉल करें:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
पोस्टग्रेज 9.1 या बाद के संस्करण की आवश्यकता है।