Nếu bạn sử dụng chuỗi ký tự chính xác như bạn đã chỉ cho chúng tôi, thì vấn đề là ;
ký tự ở cuối. Bạn có thể không bao gồm điều đó trong chuỗi truy vấn trong các lệnh gọi JDBC.
Khi bạn chỉ chèn một hàng, một INSERT
thông thường sẽ tốt ngay cả khi chèn nhiều hàng. Sử dụng một câu lệnh theo lô có thể hiệu quả hơn bất kỳ. Không cần INSERT ALL
. Ngoài ra, bạn không cần miếng đệm tạm thời và tất cả những thứ đó. Bạn có thể đơn giản hóa phương thức của mình thành một cái gì đó như thế này (giả sử tôi đã chọn đúng các tham số):
String query1 = "select substr(to_char(max_data),1,4) as year, " +
"substr(to_char(max_data),5,6) as month, max_data " +
"from dss_fin_user.acq_dashboard_src_load_success " +
"where source = 'CHQ PeopleSoft FS'";
String query2 = ".....";
String sql = "insert into domo_queries (clob_column) values (?)";
PreparedStatement pstmt = con.prepareStatement(sql);
StringReader reader = new StringReader(query1);
pstmt.setCharacterStream(1, reader, query1.length());
pstmt.addBatch();
reader = new StringReader(query2);
pstmt.setCharacterStream(1, reader, query2.length());
pstmt.addBatch();
pstmt.executeBatch();
con.commit();