Изпълнихте ли оператора като суперпотребител в psql и като друг потребител чрез JDBC?
Ръководството ни казва
:
Вие можете заобиколете това ограничение, като опаковате израза във функция с SECURITY DEFINER
собственост на суперпотребител. Бъдете наясно с рисковете за сигурността . Може също да поискате ОТМЕНЯНЕ
всички права от обществеността и само ПРЕДОСТАВЯНЕ
на избрани потребители. Може да изглежда така:
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
е включено по подразбиране, налагайки това.