CSV(Comma-Separated Values,逗号分隔值)是一种常见的数据交换格式,每一行代表一条记录,每个字段由逗号分隔。MySQL是一种关系型数据库管理系统,用于存储和管理数据。
CSV文件可以是UTF-8编码或其他编码格式,字段分隔符可以是逗号,也可以是其他字符(如制表符)。
CSV文件常用于数据备份、数据交换、日志记录等场景。将CSV导入MySQL可以用于数据导入、数据迁移、批量数据更新等。
以下是一个简单的Java示例,展示如何将CSV文件导入MySQL数据库。
首先,确保你的项目中包含以下依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.5.2</version>
</dependency>
import com.opencsv.CSVReader;
import com.opencsv.exceptions.CsvValidationException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class CsvToMysql {
public static void main(String[] args) {
String csvFile = "path/to/your/file.csv";
String jdbcUrl = "jdbc:mysql://localhost:3306/your_database";
String username = "your_username";
String password = "your_password";
String tableName = "your_table";
try (CSVReader reader = new CSVReader(new FileReader(csvFile));
Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
String[] header = reader.readNext(); // 读取CSV文件的标题行
String sql = generateInsertSql(header, tableName);
while ((String[] row : reader.readAll()) {
PreparedStatement pstmt = conn.prepareStatement(sql);
for (int i = 0; i < row.length; i++) {
pstmt.setString(i + 1, row[i]);
}
pstmt.executeUpdate();
}
} catch (IOException | SQLException | CsvValidationException e) {
e.printStackTrace();
}
}
private static String generateInsertSql(String[] columns, String tableName) {
StringBuilder columnsStr = new StringBuilder();
StringBuilder valuesStr = new StringBuilder();
for (String column : columns) {
columnsStr.append(column).append(",");
valuesStr.append("?,");
}
columnsStr.deleteCharAt(columnsStr.length() - 1);
valuesStr.deleteCharAt(valuesStr.length() - 1);
return "INSERT INTO " + tableName + " (" + columnsStr.toString() + ") VALUES (" + valuesStr.toString() + ")";
}
}
PreparedStatement
可以有效防止SQL注入攻击。LOAD DATA INFILE
语句。通过以上步骤和示例代码,你可以将CSV文件成功导入MySQL数据库。如果遇到具体问题,请提供详细信息以便进一步诊断和解决。
领取专属 10元无门槛券
手把手带您无忧上云