如果在Oracle中插入一条记录失败,则避免jdbc批处理插入失败

时间:2018-09-26 10:17:10

标签: java oracle jdbctemplate

如果批处理中间发生错误,则Oracle JDBC驱动程序将引发BatchUpdateException。使用NamedParameterJdbcDaoSupport插入以下数据

getJdbcTemplate().batchUpdate(query, dataList, 1000,
  new ParameterizedPreparedStatementSetter<MyObject>() {
     @Override
     public void setValues(final PreparedStatement ps, final MyObject bucket) throws SQLException {
       ps.setString(1, bucket.getInit());
       ps.setString(2, bucket.getNbr());                  
    }
});

由于唯一键约束,我遇到了BatchUpdateException,我们正在处理数百万条记录,所以我们不能去数据库检查唯一键。

无论如何,如果一条记录失败,批量插入不会失败。

1 个答案:

答案 0 :(得分:0)

您要使用App Service提示。 像这样在插入后添加评论。

insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(table_name, unique_index_name) */
       (...)

但是,如果您以这种方式插入一百万行,则最好使用sqlldr。