java批处理,读csv文件,写入数据库

  转自:http://cxck.itpub.net/post/28897/302636

 

下面这个例子,是从tab分隔的csv文件里读取数据,把数据写入hostname上的DBNAME的USER_MASTER里。

 

import java.io.*;

import java.sql.*;

 

import oracle.jdbc.*;

 

public class Batch1 {

         private static String sDBConnect = "jdbc:oracle:thin:@hostname:1521:DBNAME";

         private static String sDBUser = "user";

         private static String sDBPassword = "password";

         private static String sPath = "C:Batch";

         private static String sFileName = "csvfile.txt";//file name divide by t

         private static int iMax=10000;//max count

         private static int iCol=4;//column number

        

         public static void main(String[] args) {

          do_Batch_User_Master();

          System.out.println("Over.");

    }

 

  public static void do_Batch_User_Master(){

           String [][]values=new String[iMax][iCol];

           int i=do_readfile(values);

           do_Batch_User_Master(values,i);

  }

 

  public static int do_readfile(String [][]values){

           int i = 0;

           String value[];

           try {

          FileReader in = new FileReader(sPath+sFileName);

          BufferedReader br = new BufferedReader(in);

          String line;

          while ((line = br.readLine()) != null) {

              value = (line+"t0").split("t");

              if (do_check_have(value,values,i)) continue;

             

              values[i] = value;

              i++;

          }

          br.close();

          in.close();

      } catch (IOException e) {

          System.out.println(e);

      }

         return i;

  }

 

  public static boolean do_check_have(String []value,String [][]values,int icnt){

           boolean bret = false;

          

           for ( int i=0;i < icnt ;i++ )

                 {

                   if(values[i][0].equals(value[0])){//double checked

                            bret = true;

                            break;

                   }

           }

          

           return bret;

  }

     

  public static void do_Batch_User_Master(String [][]values,int icnt){

           Connection con = null;

           PreparedStatement pstm = null;

           Statement       stm = null;

           ResultSet       rst = null;

           StringBuffer sb =null;

          

             try {

               DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

               con = DriverManager.getConnection(sDBConnect,sDBUser,sDBPassword);

        

               // disable autocommit

               con.setAutoCommit(false);

                               

               sb = new StringBuffer();

               sb.append("INSERT INTO USER_MASTER (USER_ID,PASSWORD,NAME,DEL_FLG) ");

               sb.append("VALUES (?,?,?,?)");

               // PrepareStatement

               pstm = con.prepareStatement( sb.toString());

                    

               for( int i=0;i<icnt;i++ )

                     {    

                   pstm.setString(1,values[i][0]);//USER_ID

                  pstm.setString(2,values[i][1]);//PASSWORD

                   pstm.setString(3,values[i][2]);//NAME

                   pstm.setString(4,values[i][3]);//DEL_FLG

                   pstm.addBatch(); 

               }

                   

               // execute SQL

               pstm.executeBatch();

 

               // commit

               con.commit();

             } catch (SQLException ex) {

                 System.out.println(ex.getMessage());

                 try {

                                   con.rollback();

                          } catch (SQLException e) {

                                   // TODO Auto-generated catch block

                                   e.printStackTrace();

                          }

              } finally {

                if ( pstm != null ) {

                  try {

                                   pstm.close();

                          } catch (SQLException e) {

                                   // TODO Auto-generated catch block

                                   e.printStackTrace();

                          }

                }

                if ( con != null ) {

                  try {

                                   con.close();

                          } catch (SQLException e) {

                                   // TODO Auto-generated catch block

                                   e.printStackTrace();

                          }

                }

              }

  }

 

}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值