Das funktioniert bei mir:
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);
}
Verwenden von copyIn(String sql, Reader from)
hat den Vorteil, Probleme zu vermeiden, bei denen der PostgreSQL-Serverprozess die Datei nicht direkt lesen kann, entweder weil ihm die Berechtigungen fehlen (z. B. das Lesen von Dateien auf meinem Desktop) oder weil die Datei nicht lokal auf dem Computer ist, auf dem der PostgreSQL-Server ausgeführt wird.