將資料庫資料寫入.csv檔案
您可以使用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 {
//Getting the connection
String url = "jdbc:mysql:///mydb";
Connection con = DriverManager.getConnection(url, "root", "password");
System.out.println("Connection established......");
//Creating the Statement
Statement stmt = con.createStatement();
//Query to retrieve records
String query = "Select * from empDetails";
//Executing the query
stmt.executeQuery("use mydb");
ResultSet rs = stmt.executeQuery(query);
//Instantiating the CSVWriter class
CSVWriter writer = new CSVWriter(new FileWriter("D://output.csv"));
ResultSetMetaData Mdata = rs.getMetaData();
Mdata.getColumnName(1);
//Writing data to a csv file
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);
}
//Flushing data from writer to file
writer.flush();
System.out.println("Data entered");
}
}輸出
Connection established...... 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"
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP