Körde du uttalandet som superanvändare i psql och som en annan användare via JDBC?
The manual berättar
:
Du kan kringgå denna begränsning genom att slå in uttalandet i en funktion med SECURITY DEFINER
ägs av en superanvändare. Var medveten om säkerhetsriskerna . Du kanske också vill ÅTERVÄLLA
alla rättigheter från allmänheten och endast GRANT
till utvalda användare. Kan se ut så här:
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;
Tänk också på att rätt syntax för escape-strängar är:
E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
Notera E'...'
.
Från och med version 9.1, inställningen standard_conforming_strings
är på som standard, och upprätthåller detta.