sql - 如何将一个oracle数据库表中的选定数据列实时插入到另一个oracle数据库表中
问题描述
我有一个用例,我需要通过运行带有 where 子句的 select 语句来监视 oracle 数据库 XYZ 中的表 A。如果此 select 语句获取任何行,那么我需要立即将这些行插入到另一个表 B 中,该表是另一个 Oracle 数据库 MNO。
另外,假设当我在监视时,第二次相同的选择语句检索到已经在上述步骤中插入的行,但现在它的几列的值发生了变化,那么另一个表 B 也应该立即更新更新了表 A 中的列值。
我可以使用 shell 脚本来实现这一点吗?谁能让我知道如何实现这一目标?
非常感谢您提前提出的建议。
解决方案
我会说这merge
就是你需要的:
merge into mno.table_2 b -- or, possibly, table_2@mno
using table_1 a
on (a.id = b.id)
when matched then update set
(b.col1 = a.col1,
b.col2 = a.col2
)
when not matched then insert (col1, col2)
values (a.col1, a.col2);
注意第 1 行:
- 如果
mno
确实是“数据库”(而不仅仅是同一数据库中的另一个用户),那么您必须使用数据库链接(第 1 行的注释部分) - 如果
mno
只是另一个用户,那么它应该grant select, insert, update
放在用户的桌子上xyz
;否则,该操作将不起作用
合并还意味着您不必单独检查该行是否存在于另一个表中。
外壳脚本?为什么?将所有内容保存在数据库中。
“守望”可以通过
- 创建一个数据库触发器,
xyz.table_1
以便一旦发生变化,它就会触发并运行merge
dbms_scheduler
或者,安排一个定期(例如,每小时,每天两次,...)运行的作业(使用)merge
推荐阅读
- reactjs - 如何使用 React 获取 Spotify 授权令牌?
- android - 如何使所有页面反应原生 RTL?
- reactjs - 组件异常错误:对象作为 React 子对象无效(发现:带有键 {_U,_V,_W,_X} 的对象)如果您打算渲染一组子对象
- javascript - × TypeError:无法读取未定义的属性“地图”,但可以控制台记录保存数组的键 - 带有钩子的 ReactJS
- mongodb - 未捕获的异常:SyntaxError:缺失:在属性 id 之后:
- javascript - Javascript - 单击图标显示下拉菜单
- javascript - 显示 Bootstrap Alert 时是否有事件
- arrays - gatling:如何从 csv 文件中读取 json?
- php - WordPress ajax-admin.php 返回状态 200(成功),响应文本为 0
- char - Microsoft SAL - 警告 C28285:对于函数“function_name”,“注释”中有语法错误