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 [email protected] */ 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"); } }
從西藏學