sql >> Base de Datos >  >> RDS >> PostgreSQL

Forma correcta de usar la copia Postgres jdbc

Esto funciona para mí:

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);
}

Usando copyIn(String sql, Reader from) tiene la ventaja de evitar problemas en los que el proceso del servidor PostgreSQL no puede leer el archivo directamente, ya sea porque carece de permisos (como leer archivos en mi escritorio) o porque el archivo no es local para la máquina donde se ejecuta el servidor PostgreSQL.