Това работи за мен:
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);
}
Използване на copyIn(String sql, Reader from)
има предимството да избягва проблеми, при които процесът на сървъра на PostgreSQL не може да прочете файла директно, или защото му липсват разрешения (като четене на файлове на моя работен плот), или защото файлът не е локален за машината, на която работи сървърът на PostgreSQL.