Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)攻略
本文主要介绍如何使用Java和JDBC向MySQL数据库批次插入10万条数据,并且测试其效率。
环境要求
- MySQL数据库
- Java开发环境
- JDBC驱动
实现步骤
1. 安装MySQL数据库和JDBC驱动
如果你已经安装了MySQL数据库,那么可以跳过这一步。
安装JDBC驱动有很多种方式,这里以Maven作为示例,可以在pom.xml文件中加入以下依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
2. 创建数据表
在MySQL数据库中创建一个数据表,用于存储将要插入的数据。例如,可以使用以下SQL语句创建一个名为person的数据表:
CREATE TABLE person (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3. 编写Java程序
接下来编写Java程序,将数据插入到数据库中。以下是示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BatchInsertDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
conn.setAutoCommit(false);
long start = System.currentTimeMillis();
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO person(name, age) VALUES (?, ?)");
int count = 100000;
for (int i = 1; i <= count; i++) {
pstmt.setString(1, "Person-" + i);
pstmt.setInt(2, i % 100);
pstmt.addBatch();
if (i % 1000 == 0) {
pstmt.executeBatch();
conn.commit();
}
}
pstmt.executeBatch();
conn.commit();
long end = System.currentTimeMillis();
System.out.println("Cost time: " + (end - start) / 1000f + " seconds");
pstmt.close();
conn.close();
}
}
在上面的代码中,我们通过PreparedStatement预处理语句进行数据的批量插入。通过设置setString、setInt方法为PreparedStatement语句中的参数进行数据的批量插入。
接着,我们使用addBatch方法将参数批量添加到PreparedStatement批次中,当批次大小满足1000时就执行批量插入操作,并在最后提交所有的操作。
当执行完成后,通过System.ou.println打印出执行时间。
4. 执行Java程序
在命令行中进入到Java程序所在的目录,编译Java代码并执行程序,可以得到以下输出结果:
$ javac BatchInsertDemo.java
$ java BatchInsertDemo
Cost time: 19.324 seconds
以上输出结果说明向MySQL数据库批次插入10万条数据仅需19秒。
总结
通过本文介绍的方法,可以在Java中实现向MySQL数据库批次插入大量数据的操作,提高插入数据的效率,这对于大数据量的操作非常有用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率) - Python技术站