sql >> Databasteknik >  >> RDS >> PostgreSQL

behörighet nekades att försöka läsa en csv-fil med JDBC för postgres-databasen

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.




  1. Datatrunkering:Felaktigt datetime-värde:''

  2. Frågeoptimering i PostgreSQL. FÖRKLARA Grunderna – Del 2

  3. sekvensen finns inte ORA-02289

  4. GROUP_CONCAT i SQLite