Toto funguje pro 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);
}
Pomocí copyIn(String sql, Reader from)
má tu výhodu, že se vyhne problémům, kdy proces serveru PostgreSQL není schopen číst soubor přímo, buď proto, že nemá oprávnění (jako je čtení souborů na mé ploše), nebo protože soubor není lokální na počítači, na kterém běží PostgreSQL server.