加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 百科 > 正文

oracle – 批量插入:有没有办法在违反约束时跳过下一条记录?

发布时间:2021-01-08 05:25:25 所属栏目:百科 来源:网络整理
导读:我正在使用mybatis在oracle DB上执行大量批量插入. 我的过程非常简单:我从文件列表中获取记录,并在对数据执行某些检查后将它们插入到特定的表中. – 每个文件平均包含180.000条记录,我可以拥有多个文件. – 某些记录可以存在于多个文件中. – 如果每列都

我正在使用mybatis在oracle DB上执行大量批量插入.

我的过程非常简单:我从文件列表中获取记录,并在对数据执行某些检查后将它们插入到特定的表中.

– 每个文件平均包含180.000条记录,我可以拥有多个文件.

– 某些记录可以存在于多个文件中.

– 如果每列都匹配,则记录与另一个记录相同,换句话说,我不能简单地对特定字段执行检查.我已在我的DB中定义了一个约束,以确保满足此条件.

简单地说,我想忽略Oracle在违反约束时会给我的约束异常.

记录不存在? – >插入

记录已经存在? – >前进

这可能与mybatis有关吗?或者我可以在数据库级别完成某些事情吗?

我可以控制Application Server和DB,所以请告诉我完成此任务的最有效方法是什么(即使我想避免过多依赖DB …)

当然,我想在每次插入之前避免执行select * …鉴于我正在处理的记录数量会破坏我的应用程序的性能

解决方法

使用 IGNORE_ROW_ON_DUPKEY_INDEX提示:

insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(table_name index_name) */
into table_name
select * ...

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读