Udførte du sætningen som superbruger i psql og som en anden bruger via JDBC?
manualen fortæller os
:
Du kan omgå denne begrænsning ved at pakke erklæringen ind i en funktion med SECURITY DEFINER
ejet af en superbruger. Vær opmærksom på sikkerhedsrisici . Du ønsker måske også at TILBAGE
alle rettigheder fra offentlige og kun GANT
til udvalgte brugere. Kunne se sådan ud:
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;
Vær også opmærksom på, at den korrekte syntaks for escape-strenge er:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Bemærk E'...'
.
Fra og med version 9.1 er indstillingen standard_conforming_strings
er slået til som standard, og håndhæver dette.