将数据从数据库写入 .csv 文件

java 8object oriented programmingprogramming更新于 2025/11/20 9:16:17

您可以使用 OpenCSV 库将数据写入 .csv 文件,也可以使用 mysql-java-connector 通过 Java 程序与 MySQL 数据库通信。

Maven 依赖项

以下是您需要在 pom.xml 文件中包含的依赖项,以便将数据从数据库表写入 .csv 文件。

<dependency>
   <groupId>com.opencsv</groupId>
   <artifactId>opencsv</artifactId>
   <version>4.4</version>
</dependency>
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>3.9</version>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.6</version>
</dependency>

将数据写入 CSV 文件

com.opencsv 包中的 CSVWriter 类代表一个简单的 CSV 写入器。实例化此类时,您需要将一个 Writer 对象作为参数传递给其构造函数,该对象表示要写入数据的文件。它提供了名为 writeAll() 和 writeNext() 的方法,用于将数据写入 .csv 文件。

使用 writeNext() 方法

CSVWriter 类的 writeNext() 方法将下一行写入 .csv 文件

示例

假设我们创建了一个名为 empDetails 的表,并使用以下查询填充了该表 −

CREATE TABLE empDetails (ID INT, Name VARCHAR(255), Salary INT, start_date VARCHAR(255), Dept VARCHAR(255));
Insert INTO empDetails values (1, 'Krishna', 2548, '2012-01-01', 'IT');
Insert INTO empDetails values (2, 'Vishnu', 4522, '2013-02-26', 'Operations');
Insert INTO empDetails values (3, 'Raja', 3021, '2016-10-10', 'HR');
Insert INTO empDetails values (4, 'Raghav', 6988, '2012-01-01', 'IT');

以下 Java 程序根据上面创建的表创建一个 csv 文件。

import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import com.opencsv.CSVWriter;
public class DbToCSV {
   public static void main(String args[]) throws SQLException, IOException {
      //获取连接
      String url = "jdbc:mysql://localhost/mydb";
      Connection con = DriverManager.getConnection(url, "root", "password");
      System.out.println("连接已建立......");
      //创建语句
      Statement stmt = con.createStatement();
      //查询以检索记录
      String query = "Select * from empDetails";
      //执行查询
      stmt.executeQuery("use mydb");
      ResultSet rs = stmt.executeQuery(query);
      //实例化 CSVWriter 类
      CSVWriter writer = new CSVWriter(new FileWriter("D://output.csv"));
      ResultSetMetaData Mdata = rs.getMetaData();
      Mdata.getColumnName(1);
      //将数据写入 csv 文件
      String line1[] = {Mdata.getColumnName(1), Mdata.getColumnName(2), Mdata.getColumnName(3), Mdata.getColumnName(4), Mdata.getColumnName(5)};
      writer.writeNext(line1);
      String data[] = new String[5];
      while(rs.next()) {
         data[0] = new Integer(rs.getInt("ID")).toString();
         data[1] = rs.getString("Name");
         data[2] = new Integer(rs.getInt("Salary")).toString();
         data[3] = rs.getString("start_date");
         data[4] = rs.getString("Dept");
         writer.writeNext(data);
      }
      //将数据从写入器刷新到文件
      writer.flush();
      System.out.println("Data entered");
   }
}

输出

连接已建立......
数据已输入

如果您验证生成的 .csv 文件,您可以观察到其内容如下 −

"ID","Name","Salary","start_date","Dept"
"1","Krishna","2548","2012-01-01","IT"
"2","Vishnu","4522","2013-02-26","Operations"
"3","Raja","3021","2016-10-10","HR"
"4","Raghav","6988","2012-01-01","IT"

相关文章