MySQL批量插入是指在一次数据库操作中插入多条记录,而不是逐条插入。这种操作可以显著提高数据插入的效率,特别是在需要插入大量数据时。
INSERT INTO ... VALUES (...), (...), ...
语法:INSERT INTO ... VALUES (...), (...), ...
语法:INSERT INTO ... SELECT ...
语法:INSERT INTO ... SELECT ...
语法:批量插入常用于以下场景:
在Java中,可以使用JDBC的addBatch()
和executeBatch()
方法来实现批量插入。以下是一个示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BatchInsertExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "username";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
conn.setAutoCommit(false); // 关闭自动提交
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
for (int i = 0; i < 1000; i++) {
pstmt.setString(1, "User" + i);
pstmt.setString(2, "user" + i + "@example.com");
pstmt.addBatch(); // 添加到批处理
if (i % 100 == 0) { // 每100条执行一次批处理
pstmt.executeBatch(); // 执行批处理
conn.commit(); // 提交事务
pstmt.clearBatch(); // 清空批处理
}
}
pstmt.executeBatch(); // 执行剩余的批处理
conn.commit(); // 提交事务
} catch (SQLException e) {
conn.rollback(); // 回滚事务
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
希望这些信息对你有所帮助!
没有搜到相关的文章