求一个对比两个数据库相同结构表的过程,如果一致则不变化,如果不一致,则生成增删改语句存到一张表中数据库A 中的A表,与数据库B中的A表通过比较,如果不一致,则生成一个增删改语句,放到C表中的过程怎么写,oracle刚入门的小菜鸟,求大神提供思路

解决方案 »

  1.   

    通过两个库的all_tab_columns表查询出你想要的ddl语句,循环执行。
      

  2.   

    大神,可以说的明白一些么刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用唉
      

  3.   

    大神,可以说的明白一些么刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用唉不一致的话,生成一个什么样的语句?举一个具体的例子
      

  4.   

    大神,可以说的明白一些么刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用唉不一致的话,生成一个什么样的语句?举一个具体的例子不一致的话,比如A表比B表多一条数据,则生成insert语句,如果数据一致,则更新这个数据,删除的暂不考虑
      

  5.   

    大神,可以说的明白一些么刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用唉不一致的话,生成一个什么样的语句?举一个具体的例子不一致的话,比如A表比B表多一条数据,则生成insert语句,如果数据一致,则更新这个数据,删除的暂不考虑用minus
      

  6.   

    PLSQL DEVELOPER  这类工具,都有这个功能,可以试试看。
      

  7.   

    你的参照的表是唯一不动的吗?
    你这里说‘数据库A 中的A表,与数据库B中的A表通过比较’,如果数据库A的A表是参照表不变的话,
    你可以minus下A库A表与B库A表,出来的结果就是A库A表与B库A表不一致的数据,你把B库A表中相对应的数据删掉,然后把这部分数据插入到B库A表,
    反之再执行一遍,就完成了数据一致
      

  8.   

    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 ...   是所有列   
      

  9.   

    https://blog.csdn.net/jhon_03/article/details/78321937大神,可以说的明白一些么刚才看错了,这应该就是个同步数据的问题。再把需求说明确点吧,举一些例子出来。是这样,我现在比如有两个数据库,一个数据库A,一个数据库B.这两个库里有一张相同结构的表,现在我要对比这两个数据库表数据是否一致,如果不一致,就生成一个ddl语句,存到C表当中。求这样的一个过程。。我知道pl/sql有表数据对比的操作,但是特殊情况不能用唉不一致的话,生成一个什么样的语句?举一个具体的例子不一致的话,比如A表比B表多一条数据,则生成insert语句,如果数据一致,则更新这个数据,删除的暂不考虑用minus  https://blog.csdn.net/jhon_03/article/details/78321937看看这个链接 讲的是minus的用法,但是估计达不到你想要的结果 你想要的结果是自动生成insert、update、delete 到另一个表吧。 minus可以说提取出来之后你只能手动了。 但是对比A表跟B表 A表有12345 B表有345那么你的查询结果就只有12.
      

  10.   

    给你提供个思路:
    A表必须要有唯一主键,如果没有则没办法比较;
    如果数据库a的a表有数据而数据库b的a表没有,则认为是add数据,把数据库a的a表的该数据插入数据库b的a表;
    如果数据库a的a表和数据库b的a表存在主键相同的数据,则比较其他字段(一般只比较重点的几个字段,不会所有字段都比较),如果两边其他字段的数据不一致,则认为是update数据,删除数据库b的a表该数据,把数据库a的a表的该数据插入数据库b的a表。
    delete的数据其实也可以比较的,同理。