java 分批读取mysql数据库表程序
时间: 2024-02-27 22:54:47 浏览: 17
以下是Java读取MySQL数据库表的分批处理程序示例:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BatchReadMySQLTable {
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USERNAME = "root";
private static final String PASSWORD = "password";
private static final int BATCH_SIZE = 1000; //每批处理的记录数
public static void main(String[] args) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
//查询总记录数
stmt = conn.prepareStatement("SELECT COUNT(*) FROM my_table");
rs = stmt.executeQuery();
rs.next();
int totalRecords = rs.getInt(1);
//分批读取数据
int processedRecords = 0;
while (processedRecords < totalRecords) {
stmt = conn.prepareStatement("SELECT * FROM my_table LIMIT ?, ?");
stmt.setInt(1, processedRecords);
stmt.setInt(2, BATCH_SIZE);
rs = stmt.executeQuery();
while (rs.next()) {
//处理每一行记录
//TODO: 你的处理逻辑
}
processedRecords += BATCH_SIZE;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
该程序首先查询数据库表的总记录数,然后通过循环分批读取数据,每次读取 BATCH_SIZE 条记录。在读取每一行记录时,你可以编写自己的处理逻辑。注意,程序中的 "my_table" 应该替换为实际的表名。