Điều này phù hợp với tôi:
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);
}
Sử dụng copyIn(String sql, Reader from)
có lợi thế là tránh được các vấn đề trong đó quy trình máy chủ PostgreSQL không thể đọc tệp trực tiếp, do nó thiếu quyền (như đọc tệp trên Máy tính để bàn của tôi) hoặc do tệp không cục bộ với máy nơi máy chủ PostgreSQL đang chạy.