JAVA 实现 csv文件转化成mysql 数据库表
时间: 2024-03-15 18:46:06 浏览: 33
可以按照以下步骤实现:
1. 读取 csv 文件,可以使用 Java 自带的 BufferedReader 类来读取文件。
2. 解析 csv 文件,将数据存储在一个二维数组中,可以使用 Java 自带的 String 类的 split() 方法来分割每一行的数据。
3. 连接 MySQL 数据库,可以使用 JDBC(Java 数据库连接)来连接数据库。
4. 创建数据库表,可以使用 SQL 语句来创建表。
5. 将 csv 数据插入到数据库表中,可以使用 SQL 语句来插入数据。
以下是一个示例代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class CsvToMysql {
public static void main(String[] args) {
String csvFile = "path/to/csv/file.csv";
String jdbcUrl = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "password";
String tableName = "csv_table";
try {
// Connect to MySQL database
Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
Statement stmt = conn.createStatement();
// Read CSV file
BufferedReader br = new BufferedReader(new FileReader(csvFile));
String line;
String[] headers = null;
String[][] data = new String[100][100];
int row = 0;
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
if (headers == null) {
headers = values;
} else {
for (int i = 0; i < values.length; i++) {
data[row][i] = values[i];
}
row++;
}
}
// Create table
StringBuilder createTableSql = new StringBuilder();
createTableSql.append("CREATE TABLE " + tableName + " (");
for (int i = 0; i < headers.length; i++) {
createTableSql.append(headers[i] + " VARCHAR(255),");
}
createTableSql.replace(createTableSql.length() - 1, createTableSql.length(), ")");
stmt.executeUpdate(createTableSql.toString());
// Insert data
for (int i = 0; i < row; i++) {
StringBuilder insertSql = new StringBuilder();
insertSql.append("INSERT INTO " + tableName + " VALUES (");
for (int j = 0; j < headers.length; j++) {
insertSql.append("'" + data[i][j] + "',");
}
insertSql.replace(insertSql.length() - 1, insertSql.length(), ")");
stmt.executeUpdate(insertSql.toString());
}
// Close resources
br.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
注意:上述代码仅作为示例,实际应用中需考虑异常处理、数据类型转换等因素。