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

Korrekt måde at bruge kopi Postgres jdbc på

Dette virker for mig:

try (Connection conn = DriverManager.getConnection(connUrl, myUid, myPwd)) {
    long rowsInserted = new CopyManager((BaseConnection) conn)
            .copyIn(
                "COPY table1 FROM STDIN (FORMAT csv, HEADER)", 
                new BufferedReader(new FileReader("C:/Users/gord/Desktop/testdata.csv"))
                );
    System.out.printf("%d row(s) inserted%n", rowsInserted);
}

Brug af copyIn(String sql, Reader from) har den fordel at undgå problemer, hvor PostgreSQL-serverprocessen ikke er i stand til at læse filen direkte, enten fordi den mangler tilladelser (som at læse filer på mit skrivebord), eller fordi filen ikke er lokal på den maskine, hvor PostgreSQL-serveren kører.



  1. Begrænsning for kun én post markeret som standard

  2. Oracle SQL Group af if

  3. Ikke-engelske tegn i databasen ved hjælp af Java

  4. Vælg mellem flere borde uden en joinforbindelse?