求一个对比两个数据库相同结构表的过程,如果一致则不变化,如果不一致,则生成增删改语句存到一张表中

qq_29895367 2018-12-19 11:20:46
求一个对比两个数据库相同结构表的过程,如果一致则不变化,如果不一致,则生成增删改语句存到一张表中

数据库A 中的A表,与数据库B中的A表通过比较,如果不一致,则生成一个增删改语句,放到C表中的过程怎么写,oracle刚入门的小菜鸟,求大神提供思路
...全文
436 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wildwolv 2019-03-26
  • 打赏
  • 举报
回复
给你提供个思路: A表必须要有唯一主键,如果没有则没办法比较; 如果数据库a的a表有数据而数据库b的a表没有,则认为是add数据,把数据库a的a表的该数据插入数据库b的a表; 如果数据库a的a表和数据库b的a表存在主键相同的数据,则比较其他字段(一般只比较重点的几个字段,不会所有字段都比较),如果两边其他字段的数据不一致,则认为是update数据,删除数据库b的a表该数据,把数据库a的a表的该数据插入数据库b的a表。 delete的数据其实也可以比较的,同理。
止水i 2018-12-30
  • 打赏
  • 举报
回复
https://blog.csdn.net/jhon_03/article/details/78321937

引用 7 楼 nayi_224 的回复:
[quote=引用 6 楼 qq_29895367 的回复:]
[quote=引用 5 楼 nayi_224 的回复:]
[quote=引用 4 楼 qq_29895367 的回复:]
[quote=引用 3 楼 nayi_224 的回复:]
[quote=引用 2 楼 qq_29895367 的回复:]
[quote=引用 1 楼 nayi_224 的回复:]
通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。

大神,可以说的明白一些么[/quote]

刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。[/quote]

是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用。。。唉[/quote]

不一致的话,生成一个什么样的语句?举一个具体的例子[/quote]

不一致的话,比如A表比B表多一条数据,则生成insert语句,如果数据一致,则更新这个数据,删除的暂不考虑[/quote]

用minus[/quote] https://blog.csdn.net/jhon_03/article/details/78321937看看这个链接 讲的是minus的用法,但是估计达不到你想要的结果 你想要的结果是自动生成insert、update、delete 到另一个表吧。 minus可以说提取出来之后你只能手动了。 但是对比A表跟B表 A表有12345 B表有345那么你的查询结果就只有12.
l19870910 2018-12-27
  • 打赏
  • 举报
回复
insert into c values ( column1, column2 ) select a.column1,a.column2 ... from a where not exists (select 1 from b where b.column1 = a.column1 ...) union
select (b.counmn1,b.column2 ...) from b where not exists (select 1 from a where b.column1 = a.column1 ...)
其中 exist where b.column1 = a.column1 ... 是所有列
Mricoo_周 2018-12-20
  • 打赏
  • 举报
回复
你的参照的表是唯一不动的吗? 你这里说‘数据库A 中的A表,与数据库B中的A表通过比较’,如果数据库A的A表是参照表不变的话, 你可以minus下A库A表与B库A表,出来的结果就是A库A表与B库A表不一致的数据,你把B库A表中相对应的数据删掉,然后把这部分数据插入到B库A表, 反之再执行一遍,就完成了数据一致
卖水果的net 2018-12-20
  • 打赏
  • 举报
回复
PLSQL DEVELOPER 这类工具,都有这个功能,可以试试看。
nayi_224 2018-12-19
  • 打赏
  • 举报
回复
引用 6 楼 qq_29895367 的回复:
[quote=引用 5 楼 nayi_224 的回复:]
[quote=引用 4 楼 qq_29895367 的回复:]
[quote=引用 3 楼 nayi_224 的回复:]
[quote=引用 2 楼 qq_29895367 的回复:]
[quote=引用 1 楼 nayi_224 的回复:]
通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。

大神,可以说的明白一些么[/quote]

刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。[/quote]

是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用。。。唉[/quote]

不一致的话,生成一个什么样的语句?举一个具体的例子[/quote]

不一致的话,比如A表比B表多一条数据,则生成insert语句,如果数据一致,则更新这个数据,删除的暂不考虑[/quote]

用minus
qq_29895367 2018-12-19
  • 打赏
  • 举报
回复
引用 5 楼 nayi_224 的回复:
[quote=引用 4 楼 qq_29895367 的回复:]
[quote=引用 3 楼 nayi_224 的回复:]
[quote=引用 2 楼 qq_29895367 的回复:]
[quote=引用 1 楼 nayi_224 的回复:]
通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。

大神,可以说的明白一些么[/quote]

刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。[/quote]

是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用。。。唉[/quote]

不一致的话,生成一个什么样的语句?举一个具体的例子[/quote]

不一致的话,比如A表比B表多一条数据,则生成insert语句,如果数据一致,则更新这个数据,删除的暂不考虑
nayi_224 2018-12-19
  • 打赏
  • 举报
回复
引用 4 楼 qq_29895367 的回复:
[quote=引用 3 楼 nayi_224 的回复:] [quote=引用 2 楼 qq_29895367 的回复:] [quote=引用 1 楼 nayi_224 的回复:] 通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。
大神,可以说的明白一些么[/quote] 刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。[/quote] 是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用。。。唉[/quote] 不一致的话,生成一个什么样的语句?举一个具体的例子
qq_29895367 2018-12-19
  • 打赏
  • 举报
回复
引用 3 楼 nayi_224 的回复:
[quote=引用 2 楼 qq_29895367 的回复:]
[quote=引用 1 楼 nayi_224 的回复:]
通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。

大神,可以说的明白一些么[/quote]

刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。[/quote]

是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用。。。唉
nayi_224 2018-12-19
  • 打赏
  • 举报
回复
引用 2 楼 qq_29895367 的回复:
[quote=引用 1 楼 nayi_224 的回复:] 通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。
大神,可以说的明白一些么[/quote] 刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。
qq_29895367 2018-12-19
  • 打赏
  • 举报
回复
引用 1 楼 nayi_224 的回复:
通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。

大神,可以说的明白一些么
nayi_224 2018-12-19
  • 打赏
  • 举报
回复
通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧