Oracle ~ merge into 函数 (增量更新、全量更新)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle ~ merge into 函数 (增量更新、全量更新),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2448字,纯文字阅读大概需要4分钟。
内容图文
![Oracle ~ merge into 函数 (增量更新、全量更新)](/upload/InfoBanner/zyjiaocheng/869/68867cae89fd4fd0bede52ef01213d02.jpg)
Oracle merge into 函数 增量更新、全量更新
1、数据导入功能,存在全量更新/增量更新的问题,简单记录使用 oracel 的 merge into 函数。
2、全量更新(覆盖模式):数据库存在该条数据时,做更新操作。不存在时,做新增操作
3、增量更新(跳过模式):数据库存在该条数据时,不做任何操作,不存在时,做新增操作。
4、merge into 对千万级以上的数据更新,速度比较慢。
merge into 使用
merge into [target-table] A
using [source-table sql] B
on ([conditional expression] and [...]...)
when matched then -- 当on中的条件匹配时
[update sql] -- 执行操作 更新或删除等
when not matched then -- 当on中的条件不匹配时
[insert sql] -- 执行操作 新增等
/**
该语法用于:
判断B表和A表是否满足ON中条件,如果满足则用B表去更新A表(或其他操作),
如果不满足,则将B表数据插入A表但是有很多可选项(或其他操作).
其中:B表是作为条件来源或数据对比的作用,实际操作,一般是针对A表.
**/
Oracle 示例脚本
/************** 全量更新(覆盖模式)*****************/
merge into im_supply_function v
using (select 'kn0fh34s4nr56hs3ndf5hs' supply_service_code,
'sdf345gs2fd23h4fg56ysd' function_code,
'功能名称' function_name,
'www.baidu.com' target,
'2019-03-01 14:03:35' create_time,
'创建人' create_user,
'备注' remarks
from dual) d
on (v.function_code = d.function_code) -- 这里通过主键判断,数据是否存在
when matched then
update set
v.supply_service_code = d.supply_service_code,
v.function_name = d.function_name,
v.target = d.target,
v.create_time = to_date(d.create_time, 'yyyy-mm-dd hh24:mi:ss'),
v.create_user = d.create_user,
v.remarks = d.remarks
when not matched then
insert (
v.supply_service_code,
v.function_code,
v.function_name,
v.target,
v.create_time,
v.create_user,
v.remarks)
values (
d.supply_service_code,
d.function_code,
d.function_name,
d.target,
to_date(d.create_time, 'yyyy-mm-dd hh24:mi:ss'),
d.create_user,
d.remarks
) ;
/************** 增量更新(跳过模式)*****************/
merge into im_supply_function v
using (select 'kn0fh34s4nr56hs3ndf5hs' supply_service_code,
'sdf345gs2fd23h4fg56ysd' function_code,
'功能名称' function_name,
'www.baidu.com' target,
'2019-03-01 14:03:35' create_time,
'创建人' create_user,
'备注' remarks
from dual) d
on (v.function_code = d.function_code) -- 这里通过主键判断,数据是否存在
when not matched then
insert (
v.supply_service_code,
v.function_code,
v.function_name,
v.target,
v.create_time,
v.create_user,
v.remarks)
values (
d.supply_service_code,
d.function_code,
d.function_name,
d.target,
to_date(d.create_time, 'yyyy-mm-dd hh24:mi:ss'),
d.create_user,
d.remarks
) ;
内容总结
以上是互联网集市为您收集整理的Oracle ~ merge into 函数 (增量更新、全量更新)全部内容,希望文章能够帮你解决Oracle ~ merge into 函数 (增量更新、全量更新)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。