• java批量向oracle插入数据


      由于项目需要,需要将一个6M的txt中的数据插入到oracle数据表中。txt中的数据是每行一个词。经过统计,词总数是505040。为了看起来方便,我将我的所有方法写在类入口中,数据库的信息我会用test代替,代码如下。

    public static void main(String[] args) throws IOException, Exception {
            // TODO Auto-generated method stub
    
            Connection conn = null;
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:test",
                    "test", "test");
            conn.setAutoCommit(false);
            PreparedStatement pst = conn
                    .prepareStatement("insert into yq_seq_word values(seq_yq_seq_word.nextval,?)");
    
            InputStreamReader isr = new InputStreamReader(new FileInputStream(
                    new File("C:/Users/Press-Lab/Desktop/test.txt")), "utf-8");
            BufferedReader read = new BufferedReader(isr);
    
            String s = null;
            int i = 1;
            long start = System.currentTimeMillis();
            while ((s = read.readLine()) != null) {
                // 当数据满100条批量插入
                if (i % 100 == 0) {
                    // 语句执行完毕,提交本事务
                    pst.executeBatch();
                    // 此处的事务回滚是必须的,网上很多代码没有处理,会导致插入数据不完整。
                    try {
                        conn.commit();
                    } catch (Exception e) {
                        conn.rollback();
                    }
                } else {
                    pst.setString(1, s);
                    pst.addBatch();
                }
                System.err.println(s);
                i++;
            }
            // 由于每次达到100条插入,如果数据不为100的倍数的话,最后一次会剩下一些。下面的代码正好处理剩下的数据
            // 语句执行完毕,提交本事务
            pst.executeBatch();
            try {
                conn.commit();
            } catch (Exception e) {
                conn.rollback();
            }
            long end = System.currentTimeMillis();
            // 此处是打印插入效果
            System.out.println("插入" + i + "条,耗时" + (end - start));
            read.close();
        }

        以下是效果的打印。

          插入505040条,耗时22796

  • 相关阅读:
    026.MFC_发送消息
    021.MFC_字体和颜色对话框
    020.MFC_文件对话框
    015.MFC_Menu
    qt http get post实现
    openssl error: unrecognized command line option '-m64'
    ModbusTCP协议
    013.MFC_TreeControl
    菱形继承问题以及解决
    ffmpeg
  • 原文地址:https://www.cnblogs.com/dongqiSilent/p/3863524.html
Copyright © 2020-2023  润新知