PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Maneira correta de usar a cópia do Postgres jdbc


Isso funciona para mim:
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) tem a vantagem de evitar problemas em que o processo do servidor PostgreSQL não consiga ler o arquivo diretamente, seja porque não tem permissões (como ler arquivos na minha área de trabalho) ou porque o arquivo não é local para a máquina onde o servidor PostgreSQL está sendo executado.