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/products/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"); } }
从西藏学