Tôi cần phải chèn nhiều hàng vào cơ sở dữ liệu SQL Server (100 tại một thời điểm) từ mã Java của tôi. Tôi có thể làm cái này như thế nào? Hiện tại tôi đang chèn từng cái một và điều này trông không hiệu quả.Chèn nhiều hàng trong SQL Server từ Java
Trả lời
Bạn có thể sử dụng PreparedStatement#addBatch()
để tạo một lô và executeBatch()
để thực hiện.
Connection connection = null;
PreparedStatement statement = null;
try {
connection = database.getConnection();
statement = connection.prepareStatement(SQL);
for (int i = 0; i < items.size(); i++) {
Item item = items.get(i);
statement.setString(1, item.getSomeValue());
// ...
statement.addBatch();
if ((i + 1) % 100 == 0) {
statement.executeBatch(); // Execute every 100 items.
}
}
statement.executeBatch();
} finally {
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
Xem thêm:
Bạn có thể vượt qua một trong rất chuỗi dài để SQL với nhiều chèn như một tuyên bố cho SQL Server. Tuy nhiên, điều này sẽ không hoạt động nếu bạn đang thực hiện truy vấn tham số. Và các chuỗi SQL được ghép nối là "Nói chung là một ý tưởng tồi".
Bạn có thể nên xem xét lệnh BULK INSERT. Nó có vấn đề là cứng nhắc về các đơn đặt hàng cột và như vậy. Nhưng nó nhanh chóng !!
tôi không thể sử dụng điều này bởi vì tôi không có một tập tin ... cảm ơn anyways ... – Kaddy
yeah, một PITA của nó để viết các tập tin và như vậy, nhưng đó là một mệnh lệnh tốt để nhận thức được. :) –
đã tìm thấy một ví dụ về cách sắp xếp hàng loạt bằng cách sử dụng jdbc. kiểm tra điều này: http://www.exampledepot.com/egs/java.sql/BatchUpdate.html
- 1. Chèn nhiều hàng vào bảng trong SQL Server
- 2. SQL Chèn nhiều hàng
- 3. Chèn hàng loạt trong SQL Server CE
- 4. Codeigniter Chèn nhiều hàng trong SQL
- 5. Ví dụ Chèn SQL Server
- 6. SQL Chèn dữ liệu một hàng hoặc nhiều hàng?
- 7. Chèn hàng loạt SQL trong .NET
- 8. Chèn nhiều hàng trong SQLite
- 9. SQL Server 2005: Chèn nhiều hàng với một truy vấn đơn
- 10. Chèn Microsoft SQL Server từ truy vấn chọn
- 11. Chèn GUID vào SQL Server
- 12. Chèn nhiều hàng trong mysql
- 13. SQL Server danh sách điều tra chèn
- 14. Sql Server kích hoạt các giá trị chèn từ hàng mới vào một bảng khác
- 15. SQL - Chèn nhiều giá trị hàng vào một cột đơn
- 16. Chèn nhiều SQL hiệu quả
- 17. Trở nhiều hàng từ truy vấn cột XML trong SQL Server 2008
- 18. Chi phí Chèn và Cập nhật trong SQL Server
- 19. SQL Server: SUM() của nhiều hàng bao gồm nơi khoản
- 20. chèn nhiều hàng bằng một lệnh chèn
- 21. Đếm bao nhiêu hàng chèn Từ SQL Query cuối
- 22. java sql chèn
- 23. Khách hàng SQL Server đơn giản của SQL Server
- 24. Duyệt qua hàng trong SQL Server 2008
- 25. Unique hàng hạn chế trong SQL Server
- 26. Chèn nhiều hàng vào Oracle
- 27. Độc SQL SELECT Trở nhiều hàng từ một bảng hàng
- 28. SQL - Lấy dữ liệu từ nhiều hàng vào đơn hàng
- 29. SQL Server CE: nếu có cập nhật khác, hãy chèn
- 30. Tự động tạo khóa trên chèn JDBC trong SQL Server
trong phương pháp này nếu một bản ghi từ lô không thành công những gì sẽ xảy ra ..? sẽ các hồ sơ sau khi hồ sơ thất bại được chèn vào ... làm thế nào để tôi chắc chắn rằng ngoại trừ hồ sơ mà không tất cả các hồ sơ khác được chèn vào ...? – Kaddy
Điều đó thực sự phụ thuộc vào trình điều khiển được sử dụng. Xem ['executeBatch()' javadoc] (http://java.sun.com/javase/6/docs/api/java/sql/Statement.html#executeBatch%28%29). – BalusC