Heb je de instructie uitgevoerd als superuser in psql en als een andere gebruiker via JDBC?
De handleiding vertelt ons
:
Je kunt omzeil deze beperking door de instructie in een functie te verpakken met SECURITY DEFINER
eigendom van een supergebruiker. Houd rekening met de beveiligingsrisico's . Misschien wilt u ook INTREKKEN
alle rechten van het publiek en alleen GRANT
aan geselecteerde gebruikers. Zou er zo uit kunnen zien:
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;
Houd er ook rekening mee dat de juiste syntaxis voor escape-strings is:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Let op de E'...'
.
Vanaf versie 9.1, de instelling standard_conforming_strings
is standaard ingeschakeld, waardoor dit wordt afgedwongen.