JDBC连接oracle数据库,批量保存大量数据,有关commit总结

本文总结了使用JDBC连接Oracle数据库进行批量数据处理时的注意事项,包括内存管理、批处理大小控制、提交策略以及多线程安全性。强调了关闭自动提交、设置合适的提交间隔以减少内存占用和提高效率,并提供了处理余数问题的解决方案。
摘要由CSDN通过智能技术生成
       需求:需要解析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>
    	         
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值