读取csv文件,写入oracle数据库

时间:2014-07-22 23:15:56   收藏:0   阅读:635

/*
* @(#)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;
}
}

格式太凌乱。。。

读取csv文件,写入oracle数据库,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!