Dit werkt voor mij:
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);
}
Met behulp van copyIn(String sql, Reader from)
heeft het voordeel dat problemen worden vermeden waarbij het PostgreSQL-serverproces het bestand niet rechtstreeks kan lezen, hetzij omdat het geen machtigingen heeft (zoals het lezen van bestanden op mijn bureaublad) of omdat het bestand niet lokaal is op de machine waarop de PostgreSQL-server draait.