Java读取CSV/Excel文件并存入数据库
在实际的开发中,我们经常需要将CSV(逗号分隔值)或Excel文件中的数据导入到数据库中。Java提供了许多库和工具,可以方便地读取CSV/Excel文件并将数据存入数据库。本文将介绍如何使用Java读取CSV/Excel文件,并使用示例代码演示具体的实现过程。
CSV文件
CSV文件是一种常见的数据文件格式,每行代表一条记录,每个字段由逗号分隔。我们可以使用Java中的BufferedReader
类和String.split()
方法读取CSV文件。
首先,我们需要创建一个CSV文件data.csv
,并包含以下内容:
Name, Age, City
John, 25, New York
Emily, 28, Los Angeles
接下来,我们可以使用如下代码读取CSV文件并打印每行内容:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CSVReader {
public static void main(String[] args) {
String csvFile = "data.csv";
String line = "";
String csvSplitBy = ",";
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
String[] fields = line.split(csvSplitBy);
for (String field : fields) {
System.out.print(field + " ");
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行以上代码,将会输出以下结果:
Name Age City
John 25 New York
Emily 28 Los Angeles
Excel文件
与CSV文件类似,我们可以使用Java中的第三方库Apache POI
读取Excel文件。首先,我们需要引入poi
和poi-ooxml
库的依赖。
<dependencies>
<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>
</dependencies>
接下来,我们可以使用如下代码读取Excel文件并打印每个单元格的内容:
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader {
public static void main(String[] args) {
String excelFile = "data.xlsx";
try (Workbook workbook = WorkbookFactory.create(new FileInputStream(excelFile))) {
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
CellType cellType = cell.getCellType();
if (cellType == CellType.STRING) {
System.out.print(cell.getStringCellValue() + " ");
} else if (cellType == CellType.NUMERIC) {
System.out.print(cell.getNumericCellValue() + " ");
}
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行以上代码,将会输出以下结果:
Name Age City
John 25.0 New York
Emily 28.0 Los Angeles
将数据存入数据库
读取CSV/Excel文件只是第一步,接下来我们需要将读取到的数据存入数据库。通常,我们使用数据库连接池来管理数据库连接,这里以HikariCP
为例,我们需要引入HikariCP
的依赖:
<dependencies>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
</dependencies>
接下来,我们需要创建数据库表来存储数据。以MySQL为例,我们可以使用以下SQL语句创建表:
CREATE TABLE IF NOT EXISTS Persons (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
age INT NOT NULL,
city VARCHAR(255) NOT NULL
);
然后,我们可以使用如下代码将数据存入数据库中:
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class CSVToDatabase {
public static void