bulk insert from Java into Oracle

前端 未结 4 1228
悲&欢浪女
悲&欢浪女 2020-12-06 10:40

I need to insert many small rows rapidly into Oracle. (5 fields).

With MySQL, I break the inserts into groups of 100, then use one insert statement for every group o

4条回答
  •  庸人自扰
    2020-12-06 11:18

    try it,

    public Boolean inserTable(String fileName) {
        logger.info("Begin - " + this.getClass().getSimpleName() + "." + "inserTable");
            logger.info("File : " + fileName);
        try (Connection conn1 =  jdbcTemplate.getDataSource().getConnection();) {
            OracleConnection conn = ( OracleConnection ) conn1.getMetaData().getConnection();
            ScriptRunner sr = new ScriptRunner(conn);
            StringBuilder sBuffer = new StringBuilder();
            StringBuffer sb=new StringBuffer();
            String query = "Insert into TABLE_DATA (ID, DATA1, DATECREATED, CREATEDBY) Values ";
            String line = "";
            //Creating a reader object
            BufferedReader br = new BufferedReader(new FileReader(fileName),1024 * 1024 );
            while ((line = br.readLine()) != null) {
                //logger.info("Leyo linea : " + line);
                sb.append(query.concat("(").concat("TABLE_DATA_SQ.NEXTVAL,").concat(line.substring(0,6)).concat(",").concat("sysdate,").concat("'BDVENLINEA'").concat(");"));
                sb.append("\n");
            }
            sb.append("commit;");
            Reader reader = new StringReader(sb.toString());
            //Running the script
            sr.runScript(reader);
            reader.close();
            br.close();
            return true;
        } catch (FileNotFoundException e) {
            logger.error(e.getMessage(), e);
            throw new TechnicalException(e, e.getMessage());
        } catch (SQLException e) {
            e.printStackTrace();
            throw new TechnicalException(e, e.getMessage());
        } catch (IOException e) {
            e.printStackTrace();
            throw new TechnicalException(e, e.getMessage());
        } finally {
            logger.info("End   - " + this.getClass().getSimpleName() + "." + "inserTable");
        }
    }
    

提交回复
热议问题