sql >> Database >  >> RDS >> PostgreSQL

toestemming geweigerd proberen om een ​​csv-bestand te lezen met behulp van JDBC voor postgres-database

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.




  1. Hoe expliciet_defaults_for_timestamp in te schakelen?

  2. Oracle SQL-groepering/bestelling

  3. SUM() Functie in MySQL

  4. Python- en MySQL-query met aanhalingstekens