To działa dla mnie:
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);
}
Używanie copyIn(String sql, Reader from)
ma tę zaletę, że pozwala uniknąć problemów, w których proces serwera PostgreSQL nie może bezpośrednio odczytać pliku, ponieważ brakuje mu uprawnień (jak czytanie plików na moim pulpicie) lub ponieważ plik nie jest lokalny na komputerze, na którym działa serwer PostgreSQL.