Java JDBC 批量插入執行時問題

問題:jdbc 批量插入數據是出現死等,沒法繼續插入數據 ,也不報錯 ,也不拋異常sql

           使用 : session

      

execute 執行批量處理
public void save(Map<String, Object> fieldsMap, String tableName, DBConnectionObject connectObj) throws AppSQLException
    {
        Map<String, Object> SaveMap = insertFieldAndCondition(fieldsMap);
        String fields = SaveMap.get(DBConstants.DB_FIELDS).toString();
        String fieldsLog = SaveMap.get(DBConstants.DB_FIELDS_LOG).toString();
        String mapValues = SaveMap.get(DBConstants.DB_MAPVALUES).toString();
        Object[] params = (Object[]) SaveMap.get(DBConstants.DB_PARAMS);
        StringBuilder INSERT_SQL = new StringBuilder();
        INSERT_SQL.append(" INSERT INTO ").append(tableName).append("(").append(fields).append(") VALUES (").append(mapValues).append(")");

        try
        {
            long startTime = DateUtils.getTimeStamp();
            if (connectObj == null)
            {
                execute(INSERT_SQL.toString(), params);
            }
            else
            {
                execute(INSERT_SQL.toString(), params, connectObj);
            }
            long endTime = DateUtils.getTimeStamp();
            log.info("【 果SQL】" + INSERT_SQL + "【字段】" + fieldsLog + "【花費時間】" + (endTime - startTime));
        }
        catch (AppSQLException e)
        {
            e.printStackTrace();
        }
    }

處理:app

    

executeBatch 使用執行批量處理
       PreparedStatement ps = null;
        try
        {
            String sql = "INSERT INTO "+ TABLE_NAME +" (" + FIELDS + ") VALUES ( ?,?,?,?,?,?,?,?,? )  " ;
            Connection connection = connectObj.getCon();
            ps = connection.prepareStatement(sql);
            for(Map<String, Object> Data : DataList)
            {    
                ps.setString(1,DataTran.ObjectToString(Data, "StatId"));
                ps.setString(9, DataTran.ObjectToString(Data, "AddTime") ); 
                ps.addBatch();
            }
            long StartTime = DateUtils.getTimeStamp();
            ps.executeBatch();
            long EndTime = DateUtils.getTimeStamp();
            log.info("【 查詢,所花時間】" + (EndTime - StartTime));
        }
        catch (SQLException e)
        {
            sessionRollback(connectObj);
            e.printStackTrace();
            throw new AppSQLException(info);
        }
        finally
        {
            if(ps != null ){
                try
                {
                    ps.close();
                }
                catch (SQLException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }

相關文章
相關標籤/搜索