用java编写,将cvs导入mysql
发布网友
发布时间:2022-05-02 03:04
我来回答
共2个回答
热心网友
时间:2022-05-02 04:33
package me.test;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import org.skife.csv.CSVReader;
import org.skife.csv.SimpleReader;
/**
* 说明:作为示例,将CSV中的数据插入到数据库中。
* 注意:仅仅是功能性示例,没有try...catch...,请自行追加,并确认该如何commit和rollback。
*
*
* 数据库DDL:
* CREATE TABLE USER (ID INT , NAME VARCHAR(45), PRIMARY KEY(ID));
*
* CSV文件(C:/t.csv)中的数据内容
* 1, 张三
* 2, 李四
* 3, 王五
*
* 参考第三方类库:
* MySQL Jdbc驱动包
* http://www.mysql.com/procts/connector/
* Apache commons CSV -> Skife CSV -> csv-1.0.jar
* http://commons.apache.org/sandbox/csv/
*
* @author btpka3@163.com
*/
public class Csv2DB {
// 测试代码
@SuppressWarnings("unchecked")
public static void main(String args[]) throws ClassNotFoundException,
SQLException, IOException {
// 加载驱动类
Class.forName("org.gjt.mm.mysql.Driver");
// 创建数据库连接
String url = "jdbc:mysql://localhost:3306/test";
String userName = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, userName, password);
String sql = "INSERT INTO USER(ID, NAME) VALUES(?,?)";
PreparedStatement stmt = conn.prepareStatement(sql);
conn.setAutoCommit(false);
CSVReader reader = new SimpleReader();
// CSV 文件路径
String csvFilePath = "C:/t.csv";
// CSV 文件中是否有一条头部记录(非数据,类似于列名)
boolean hasHeaderRec = false;
List<String[]> recList = reader.parse(new File(csvFilePath));
for (int i = 0; i < recList.size(); i++) {
String[] rec = recList.get(i);
if (i == 0 && hasHeaderRec) {
continue; // 跳过头部记录
}
stmt.clearParameters();
stmt.setInt(1, Integer.valueOf(rec[0]));
stmt.setString(2, rec[1]);
stmt.execute();
}
stmt.close();
conn.commit();
conn.close();
System.out.println("success");
}
}
热心网友
时间:2022-05-02 05:51
求解楼主用的方案~分享一下