CSV(Comma-Separated Values,逗号分隔值)文件作为一种简单且广泛使用的数据交换格式,经常需要被导入到关系型数据库如MySQL中,以便进行更复杂的查询、分析和持久化存储
本文将详细介绍如何使用Java语言,结合开源的JavaCSV库,高效地将CSV文件数据导入MySQL数据库
这一过程不仅适用于数据迁移、ETL(Extract, Transform, Load)任务,也是数据处理流程中的一个重要环节
一、准备工作 1.1 环境配置 在开始之前,请确保您已经安装了以下软件: -JDK(Java Development Kit):用于编写和运行Java程序
-MySQL Server:目标数据库,用于存储CSV文件中的数据
-MySQL Connector/J:MySQL的官方JDBC(Java Database Connectivity)驱动程序,用于Java应用程序与MySQL数据库的连接
-OpenCSV:一个流行的Java库,用于解析CSV文件
虽然标题中提到的是“JavaCSV”,但OpenCSV更为常见且功能强大,本文将基于此库进行说明
1.2 项目设置 创建一个新的Java项目,并添加必要的依赖
如果使用Maven构建工具,可以在`pom.xml`文件中添加以下依赖:
xml
假设我们有一个名为`employees.csv`的文件,内容如下: id,name,age,department,salary 1,John Doe,30,HR,50000 2,Jane Smith,25,IT,60000 ... 在MySQL中创建对应的表: sql CREATE TABLE employees( id INT PRIMARY KEY, name VARCHAR(100), age INT, department VARCHAR(50), salary DECIMAL(10,2) ); 三、编写Java代码导入数据 3.1 读取CSV文件 使用OpenCSV库读取CSV文件内容
创建一个`CSVReader`对象,并逐行解析文件
java
import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class CSVToMySQL{
public static void main(String【】 args){
String csvFile = path/to/employees.csv;
try(CSVReader reader = new CSVReader(new FileReader(csvFile))){
List
java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DatabaseConnection{
private static final String URL = jdbc:mysql://localhost:3306/your_database_name;
private static final String USER = your_username;
private static final String PASSWORD = your_password;
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
3.3 数据转换与插入
将CSV记录转换为SQL插入语句并执行 为了提高效率,使用`PreparedStatement`批量插入数据
java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class CSVToMySQL{
public static void main(String【】 args){
String csvFile = path/to/employees.csv;
String insertSQL = INSERT INTO employees(id, name, age, department, salary) VALUES(?, ?, ?, ?, ?);
try(CSVReader reader = new CSVReader(new FileReader(csvFile));
Connection conn = DatabaseConnection.getConnection();
PreparedStatement pstmt = conn.prepareStatement(insertSQL)){
List