sql >> Database teknologi >  >> RDS >> PostgreSQL

tilladelse nægtet forsøg på at læse en csv-fil ved hjælp af JDBC til postgres-database

Udførte du sætningen som superbruger i psql og som en anden bruger via JDBC?
manualen fortæller os :

Du kan omgå denne begrænsning ved at pakke erklæringen ind i en funktion med SECURITY DEFINER ejet af en superbruger. Vær opmærksom på sikkerhedsrisici . Du ønsker måske også at TILBAGE alle rettigheder fra offentlige og kun GANT til udvalgte brugere. Kunne se sådan ud:

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;

Vær også opmærksom på, at den korrekte syntaks for escape-strenge er:

E'C:\\Users\\Abhishek\\Desktop\\data1.csv'

Bemærk E'...' .
Fra og med version 9.1 er indstillingen standard_conforming_strings er slået til som standard, og håndhæver dette.




  1. Hvordan tæller jeg kolonner i en tabel

  2. MySQL PREPARE-erklæring i lagrede procedurer

  3. Sådan fjerner du førende og efterfølgende hvide mellemrum i MySQL

  4. LEAST() Funktion i Oracle