你的位置:首页 > Java教程

[Java教程]Java 读取txt文件,读取结果保存到数据库


需求:有一个很大的txt文件(1,000,000条数据),从txt中读取有用数据库后保存到Oracle数据库中

 

利用Java实现:

1、加载文件后一行一行读取

2、数据库连接后按行插入到数据库

package com.test.IF.service;import java.io.File;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import org.apache.commons.io.FileUtils;import org.apache.commons.io.LineIterator;public class ReadCustomerFile {    int idx;  Connection conn = null;  PreparedStatement pstmt = null;      // 使用commons-io.jar包的FileUtils的类进行读取  public void readTxtFileByFileUtils(String fileName) {    File file = new File(fileName);        dbConnection();        try {      LineIterator lineIterator = FileUtils.lineIterator(file, "GB2312");      while (lineIterator.hasNext()) {        String line = lineIterator.nextLine();                // 行数据转换成数组        String[] custArray = line.split("\\|");        insertCustInfo(custArray);        Thread.sleep(10);      }    } catch (IOException e) {      e.printStackTrace();    } catch (InterruptedException e) {      e.printStackTrace();    } finally {      dbDisConnection();    }  }    // 插入到数据库中  public void insertCustInfo(String[] strArray) {         try {      StringBuffer sqlBf = new StringBuffer();      sqlBf.setLength(0);            sqlBf.append("INSERT INTO TEMP_CUST_INFO(CUST_NO, CUST_NM, MOB_NO1)        \n");      sqlBf.append("     VALUES(?                          \n");      sqlBf.append("        , ?                          \n");      sqlBf.append("        , ?)                          \n");            pstmt = conn.prepareStatement(sqlBf.toString());      idx = 1;      pstmt.clearParameters();      pstmt.setInt(idx++, Integer.parseInt(strArray[0]));      pstmt.setString(idx++, strArray[1]);      pstmt.setString(idx++, strArray[2]);            pstmt.executeUpdate();          } catch (SQLException e) {      e.printStackTrace();    } finally {      if (pstmt != null) {        try {          pstmt.close();        } catch (SQLException e) {          e.printStackTrace();        }      }    }  }    // 连接数据库  public Connection dbConnection() {    try {      Class.forName("oracle.jdbc.driver.OracleDriver");            String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";       String user = "scott";       String password = "goodluck";             conn = DriverManager.getConnection(url, user, password);        System.out.println("Connection 开启!");    } catch (ClassNotFoundException e) {      e.printStackTrace();    } catch (SQLException e) {      e.printStackTrace();    }        return conn;  }    // 关闭数据库  public void dbDisConnection() {    if (conn != null) {      try {        conn.close();        System.out.println("Connection 关闭!");      } catch (SQLException e) {        e.printStackTrace();      }    }  }    public static void main(String[] args) {    ReadCustomerFile rcf = new ReadCustomerFile();    rcf.readTxtFileByFileUtils("D:\\test\\customer_info.txt");  }}

 

确认数据库数据: