PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

разрешението е отказано при опит за четене на csv файл с помощта на JDBC за база данни на postgres

Изпълнихте ли оператора като суперпотребител в 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 е включено по подразбиране, налагайки това.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА:разрешението е отказано за име на таблица за връзка в Postgres, докато се опитва SELECT като потребител само за четене

  2. Предизвикателство за рекурсивна заявка - прост пример за родител/дете

  3. Създайте динамична заявка за актуализиране в psycopg2

  4. Задействане за актуализиране на текущата дата в Postgres 9

  5. Как да получите PostgreSQL на VPS / Специализиран сървър