Oracle两台服务器之间数据过滤问题 我们公司有两台Oracle的服务器,用途不同,但有一部分数据会用一个C#的程序从一台复制部分到另一台上。
如工单这个表,会有部分工单资料从服务器A复制到服务器B。
现在想快速找出服务器A中工单这个表,有哪些工单号没有复制到服务器B上。
先是想在服务器B上查出全部工单号,再在服务器A上用not in ('',''...)这种方式,但提示not in后面的字符串不能超过1000个。
再试not in (select '' from dual union all select '' from dual ...)这种方式,提示
ORA-04031这个错误。
因为权限问题,只能在这两个服务器的Oracle中执行select命令。
请高手指点一下,有没有什么好办法。
如果不能修改设计,只能select,那真是没有其他比较好的办法。 ------解决方案-------------------- 如果要用SQL实现,可以试试下面方法,不知道能不能行得通
服务器B通过下面方法查出全部工单号:
select to_char(wm_concat(ID))
from (
select ID,
row_number()over(order by ID) as rn
from tt
)t
group by trunc(rn/1000);
服务器A用not in('') and not in ('')
------解决方案-------------------- 先是想在服务器B上查出全部工单号,再在服务器A上用not in ('',''...)这种方式
这是多么无效率的操作~~~~~~~~ ------解决方案-------------------- 用not exists试试吧骚年、
select * from A a where not exists (
select 1 from B b where b.no = a.no
)
------解决方案-------------------- not exists 吧 效率也高点 ------解决方案--------------------