Java实现十秒向MySQL插入百万条数据,需要注意以下几个方面:
- 使用JDBC方式连接MySQL数据库
Java对于MySQL数据库的连接,可以使用JDBC方式,Java提供了java.sql包,其中包含了用于连接数据库和执行SQL语句的类和接口。我们需要将mysql-connector-java.jar添加到我们的项目中,以便能够使用JDBC连接MySQL数据库。以下示例展示了如何建立连接和关闭连接:
Connection conn = null;
try {
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?" +
"user=root&password=admin&useUnicode=true&characterEncoding=UTF8");
// 具体SQL操作
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭数据库连接
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
- 批量插入数据
使用JDBC的方式向MySQL插入数据时,可以使用PreparedStatement类的addBatch方法,批量插入多条数据,如下面示例所示:
Connection conn = null;
PreparedStatement stmt = null;
try {
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?" +
"user=root&password=admin&useUnicode=true&characterEncoding=UTF8");
// 准备SQL预编译语句
String sql = "INSERT INTO user (username, password, email) VALUES (?, ?, ?)";
stmt = conn.prepareStatement(sql);
// 设置参数并批量加入
for (int i = 0; i < 1000000; i++) {
stmt.setString(1, "user_" + i);
stmt.setString(2, "123456");
stmt.setString(3, "user_" + i + "@example.com");
stmt.addBatch();
}
// 执行批量插入操作
stmt.executeBatch();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭PreparedStatement和数据库连接
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
- 使用优化的插入方式
如果批量插入方式插入的数据量很大,可能会因为内存限制或其他原因导致程序崩溃。因此,我们需要使用更优化的插入方式,比如使用LOAD DATA INFILE语句或使用MyISAM存储引擎。以下是使用LOAD DATA INFILE的示例:
Connection conn = null;
Statement stmt = null;
try {
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?" +
"user=root&password=admin&useUnicode=true&characterEncoding=UTF8");
// 准备执行的SQL语句
String sql = "LOAD DATA INFILE 'user.csv' INTO TABLE user FIELDS TERMINATED BY ',' " +
"LINES TERMINATED BY '\\n' (username,password,email)";
stmt = conn.createStatement();
// 执行SQL语句
stmt.execute(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭Statement和数据库连接
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
以上是向MySQL插入百万条数据的攻略,具体的实现方式可以根据实际情况进行选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现十秒向MySQL插入百万条数据 - Python技术站