क्या आपने कथन को सुपरयूज़र . के रूप में निष्पादित किया था psql में और JDBC के माध्यम से एक अन्य उपयोगकर्ता के रूप में?
मैनुअल हमें बताता है
:
आप कर सकते हैं SECURITY DEFINER
एक सुपरयुसर के स्वामित्व में। सुरक्षा जोखिमों . आप REVOKE
भी करना चाह सकते हैं। जनता से सभी अधिकार और केवल GRANT
चयनित उपयोगकर्ताओं के लिए। इस तरह दिख सकता है:
CREATE OR REPLACE FUNCTION foo()
RETURNS void AS
$BODY$
COPY data_1
FROM E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
USING delimiters ',';
$BODY$
LANGUAGE sql VOLATILE SECURITY DEFINER
SET search_path = public, pg_temp; -- or whatever schema the table is in
REVOKE ALL ON FUNCTION foo() FROM public;
GRANT SELECT ON FUNCTION foo() TO my_user;
साथ ही, ध्यान रखें कि एस्केप स्ट्रिंग्स के लिए उचित सिंटैक्स है:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
नोट करें E'...'
.
संस्करण 9.1 के अनुसार, सेटिंग standard_conforming_strings
डिफ़ॉल्ट रूप से चालू है, इसे लागू कर रहा है।