Java实现从数据库导出大量数据记录并保存到文件的方法,大概分为以下几步:
- 首先,需要连接数据库,并且执行查询操作获取数据结果集。
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection con = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement stmt = con.createStatement();
// 查询数据得到ResultSet结果集
String sql = "SELECT * FROM table_name";
ResultSet rs = stmt.executeQuery(sql);
- 然后,需要将获取到的数据结果集写入到文件中,可以利用Java IO的相关类实现,例如文件输出流(FileOutputStream)和数据输出流(DataOutputStream)。
// 创建文件输出流和数据输出流
FileOutputStream fos = new FileOutputStream("data.txt");
DataOutputStream dos = new DataOutputStream(fos);
// 遍历结果集,将数据写入文件
while (rs.next()) {
dos.writeUTF(rs.getString("column_name"));
dos.writeInt(rs.getInt("column_name"));
// ...
}
// 关闭数据输出流和文件输出流
dos.close();
fos.close();
其中,writeUTF 写入一个字符串,writeInt 写入一个整数等等,可以根据需要选择不同的写入方法。
- 最后,需要关闭数据库连接和相关资源。
// 关闭ResultSet、Statement和Connection对象
rs.close();
stmt.close();
con.close();
示例一:导出学生信息到文本文件
假设数据库中有一个名为 students 的数据表,包含学生姓名(name)、学生编号(id)、所在班级(class)等字段。我们需要从该表中导出全部学生信息到一个文本文件中。
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection con = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement stmt = con.createStatement();
// 查询数据得到ResultSet结果集
String sql = "SELECT * FROM students";
ResultSet rs = stmt.executeQuery(sql);
// 创建文件输出流和数据输出流
FileOutputStream fos = new FileOutputStream("students.txt");
DataOutputStream dos = new DataOutputStream(fos);
// 遍历结果集,将数据写入文件
while (rs.next()) {
dos.writeUTF(rs.getString("name"));
dos.writeInt(rs.getInt("id"));
dos.writeUTF(rs.getString("class"));
}
// 关闭数据输出流和文件输出流
dos.close();
fos.close();
// 关闭ResultSet、Statement和Connection对象
rs.close();
stmt.close();
con.close();
示例二:导出订单信息到Excel文件
假设数据库中有一个名为 orders 的数据表,包含订单号(order_no)、订单金额(amount)、下单时间(create_time)等字段。我们需要从该表中导出时间在2021年7月份的所有订单信息到一个Excel文件中。
首先,需要引入Apache POI的相关依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
然后,实现导出逻辑:
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection con = DriverManager.getConnection(url, user, password);
// 创建工作簿对象
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表对象
XSSFSheet sheet = workbook.createSheet("Orders");
// 创建表头行
XSSFRow headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("订单号");
headerRow.createCell(1).setCellValue("订单金额");
headerRow.createCell(2).setCellValue("下单时间");
// 查询数据得到ResultSet结果集
String sql = "SELECT * FROM orders WHERE create_time BETWEEN '2021-07-01' AND '2021-07-31'";
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
// 遍历结果集,将数据写入工作表中
int rowNo = 1;
while (rs.next()) {
XSSFRow row = sheet.createRow(rowNo++);
row.createCell(0).setCellValue(rs.getString("order_no"));
row.createCell(1).setCellValue(rs.getDouble("amount"));
row.createCell(2).setCellValue(rs.getString("create_time"));
}
// 自动调整列宽
for (int i = 0; i < 3; i++) {
sheet.autoSizeColumn(i);
}
// 创建输出流
FileOutputStream fos = new FileOutputStream("orders.xlsx");
// 将工作簿写入输出流
workbook.write(fos);
// 关闭输出流
fos.close();
// 关闭ResultSet、Statement和Connection对象
rs.close();
pstmt.close();
con.close();
以上代码中,我们首先创建了一个工作簿对象和一个工作表对象,并且创建了表头行,然后执行查询操作并遍历结果集,将查询结果写入工作表中。最后,将工作簿写入输出流,导出Excel文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现从数据库导出大量数据记录并保存到文件的方法 - Python技术站