これは私にとってはうまくいきます:
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サーバーが実行されているマシンに対してローカルではないためです。