Inserting Multiple Rows into MySQL using PreparedStatement
When attempting to efficiently insert numerous rows into a My table, onepay scounter PreparedStatement中事先確定需要插入的行數。
為了最佳化插入過程,MySQL 提供了批次插入語法,如下所示:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
登入後複製
使用PreparedStatement 進行批次插入
使用PreparedStatement進行批次插入的步驟如下:<p></p><ol>使用addBatch() 方法將每行資料新增至批次處理。 <li>使用 executeBatch() 方法執行批次處理。 <li>
</ol><p>範例程式碼:<strong></strong></p><pre class="brush:php;toolbar:false">public void save(List<Entity> entities) throws SQLException {
try (
Connection connection = database.getConnection();
PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
) {
int i = 0;
for (Entity entity : entities) {
statement.setString(1, entity.getSomeProperty());
// ...
statement.addBatch();
i++;
if (i % 1000 == 0 || i == entities.size()) {
statement.executeBatch(); // Execute every 1000 items.
}
}
}
}登入後複製
需要注意的是,執行批次插入時,建議每隔一定數量的行(例如1000)執行一次,因為某些JDBC 驅動程式或資料庫可能對批量長度有限制。
相關參考:
JDBC tutorial - Using PreparedStatement- JDBC tutorial - Using PreparedStatement
- JDBC tutorial - Using Prement
以上是如何使用PreparedStatement有效率地將多行插入MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!