CSV文件操作

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");
    }
}
從西藏學
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章