sql >> Databasteknik >  >> RDS >> PostgreSQL

Korrekt sätt att använda kopia Postgres jdbc

Detta fungerar för 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);
}

Använda copyIn(String sql, Reader from) har fördelen att undvika problem där PostgreSQL-serverprocessen inte kan läsa filen direkt, antingen för att den saknar behörigheter (som att läsa filer på mitt skrivbord) eller för att filen inte är lokal för maskinen där PostgreSQL-servern körs.



  1. Visar normaliserade data

  2. sun.security.validator.ValidatorUndantag:Byggandet av PKIX-väg misslyckades, med java>1.6

  3. mysql-fråga för att välja alla rader i aktuell månad?

  4. Hur man beräknar köravstånd mellan två latituder och longituder i PHP