/*
 * @(#)DataParse.java 2014年4月28日
 */
package com.yihaodian.sa.doData;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.StringTokenizer;
/**
 * <pre>
 * @author mashunran
 *
 * 功能:
 * 创建日期: 2014年4月28日
 * 修改人:  
 * 修改说明: 
 * 评审人:
 * </pre>
 */
public class DataParse {
    public static void main(String[] args) throws SQLException {
        DataParse dc = new DataParse();
        Connection con = null;
        PreparedStatement pst = null;
        // Statement sm = null;
        String ip = "192.168.20.56";// db ip
        String port = "1521";//
        String sid = "bidev";
        String userName = "edw1_user";
        String passWord = "edw1_user";
        // sm = con.createStatement();
        DateFormat format= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //str时间转化为yyyy-MM-dd HH:mm:ss格式date
        String sql = "insert into INF_PMS_OOS_DAILY(MRCHNT_ID,PROD_CODE,PM_INFO_ID,DATE_ID,IS_OOS,ETL_BATCH_ID,UPDT_TIME) values(?,?,?,?,?,?,?)";
        try {
            con = dc.getConnection(ip, port, sid, userName, passWord);
            File file = new File("E://data"); // CSV文件
            File[] files = file.listFiles();
            if (files != null) {
                pst = con.prepareStatement(sql);//连接数据库(上线299次)
                for (File f : files) {
                    BufferedReader br = new BufferedReader(new FileReader(f));
                    // 读取直到最后一行
                    String line = "";
                    int start = 0;
                    while ((line = br.readLine()) != null) {
                        start++;
                        if (start == 1)
                            continue; //从第二行开始读
                        // 把一行数据分割成多个字段
                        StringTokenizer st = new StringTokenizer(line, "");
                        while (st.hasMoreTokens()) {
                            // 每一行的多个字段用,隔开表示
                            String a[] = st.nextToken().split(",");
//给sql参数???赋值,?的序号从1开始,除此之外java的序号都从0开始
                            pst.setLong(3, Long.parseLong(a[2].substring(1, a[2].length()-1)));//csv文件内容都是逗号分隔的带有双引号的字符串,需要先去掉引号,substring
                            pst.setLong(1, Long.parseLong(a[0].substring(1, a[0].length()-1)));
                            pst.setString(2, a[1].substring(1, a[1].length()-1));
                            try {
                                pst.setDate(4, new java.sql.Date(format.parse(a[3].substring(1, a[3].length()-1)).getTime()));//java.sql.Date与java.util.date互转
                            } catch (ParseException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                            }
                            pst.setLong(5, Long.parseLong(a[4].substring(1, a[4].length()-1)));
                            pst.setLong(6, Long.parseLong(a[5].substring(1, a[5].length()-1)));
                            try {
                                pst.setDate(7, new java.sql.Date(format.parse(a[6].substring(1, a[6].length()-1)).getTime()));
                            } catch (ParseException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            pst.execute();
                            System.out.println("读完一行");
                        }
                    }
                    br.close();
                    System.out.println("-------------------------读完一个文件---------------------------");
                }
                System.out.println("****************结束结束结束****************");
            }
        } catch (FileNotFoundException e) {
            // 捕获File对象生成时的异常
            e.printStackTrace();
        } catch (IOException e) {
            // 捕获BufferedReader对象关闭时的异常
            e.printStackTrace();
        } finally {
            if (pst != null) {
                pst.close();
                pst = null;
            }
            if (con != null) {
                con.close();
                con = null;
            }
        }
    }
    //连接oracle数据库
    public Connection getConnection(String ip, String port, String sid, String userName, String passWord) {
        String driverName = "oracle.jdbc.driver.OracleDriver";// 连接oracle驱动包,需要把驱动jar包 add to buildPath
        String dbUrl = "jdbc:oracle:thin:@" + ip + ":" + port + ":" + sid + "";
        Connection conn = null;
        try {
            Class.forName(driverName);
            conn = DriverManager.getConnection(dbUrl, userName, passWord);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // Connection conn;
        return conn;
    }
}
格式太凌乱。。。