需求:需要解析txt文件中数据,保存数据到数据库中。(数据量较大:文件700M左右,数据有500万条左右)
简单写个工具类,jdbc连接数据库执行批处理:
实体类:注意时间类型
<span style="color:#FF0000;">import java.util.Date;</span>
public class XskjBean {
private String ticket_No;
<span style="color:#FF0000;">private Date issue_DATE;//注意这里时间类型的处理</span>
private String Union_NO;
private String Main_Ticket_No;
private String ticket_agent;
private String channel;
private Date flight_DATE;
private String ori;
private String dest;
private String CARRIERS_SC;
private String Flight_No_SC;
private String Flight_SubClass_SC;
private String CARRIERS_SJ;
private String Flight_No_SJ;
private String ticket_Price;
private String jianshe_Price;
private String fujia_Price;
private String tax_Price;
private String agent_Price;
private String ticket_class_trip;
private String flag;
...}
数据库工具类:(批处理逻辑)
public class ConnectionUtils {
//数据库地址
private static String url="jdbc:oracle:thin:@ip:1531:sid";
private static String user="XX";
private static String password="XX";
public static Connection conn;
public static Connection getConnection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, password);
} catch (Exception ex) {
}
return conn;
}
//批量添加
public static void batchUpdate(String sqlTemplate, List<XskjBean> list) {
if(conn ==null){
conn = getConnection();
}
String sql = "insert into T_SALE_CALIBER values(SEQ_T_SALE_CALIBER.Nextval,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement pstmt =null;
try {
pstmt = conn.prepareStatement(sql);
conn.setAutoCommit(false);
for(int i=0; i<list.size(); i++) {
XskjBean infoBean = list.get(i);
pstmt.setString(1, infoBean.getTicket_No());
<span style="color:#FF0000;">pstmt.setDate(2, new java.sql.Date(infoBean.getIssue_DATE().getTime()));//注意此处与数据库中Date类型相对应</span>