0

我是 Oracle 和 sql 的新手,但我被分配了这份工作,我希望有人能帮我解决这个问题。

基本上,我得到了一个连接到远程数据库的数据库链接,我从那里的单个表和本地数据库中的一些其他表中提取了一些信息,然后处理它并将其插入到本地数据库中的表中。我已经成功地做到了这一点,但现在我需要一种方法来确认远程数据库中的所有数据实际上都已复制到本地数据库中。我该怎么做呢?

这是我必须将信息插入本地数据库的代码。

INSERT INTO kcrt_requests_int RI 
  RI.TRANSACTION_ID, 
  RI.DESCRIPTION, 
  RI.CREATED_USERNAME, 
  RI.REQUEST_TYPE_ID, 
  RI.STATUS_ID, 
  RI.WORKFLOW_ID, 
  RI.WORKFLOW_STEP_ID, 
  RI.RELEASED_FLAG, 
  RI.USER_DATA1, 
  RI.USER_DATA2, 
  RI.USER_DATA3, 
  RI.USER_DATA4, 
  RI.USER_DATA7)

SELECT 
  KCRT_TRANSACTIONS_S.NEXTVAL, 
  RD.PARAMETER13||' '||R.DESCRIPTION, 
  '[SYS.USERNAME]', 
  '0001', 
  '31876', 
  '34987', '1234', 
  'Y', 
  PP.PROJECT_ID,
  VP.REVIEWDATE,
  RD.PARAMETER9, 
  R.REQUEST_ID, 
  RD.PARAMETER13

FROM 
  KCRT_REQUEST_TYPES_NLS RT, 
  KCRT_REQUESTS R, 
  KCRT_REQUEST_DETAILS RD, 
  v_projects@XXXXX VP, 
  PM_PROJECTS PP


WHERE 
  R.REQUEST_TYPE=RT.REQUEST_TYPE_ID 
  AND R.REQUEST_ID=RD.REQUEST_ID 
  AND RD.BATCH_NUMBER=1 
  AND RT.REQUEST_TYPE_NAME 'AAAAA' 
  AND R.STATUS_CODE = 'BBBBB' 
  AND RD.PARAMETER13 = to_char(VP.IDBANK)   
  AND VP.REVIEWDATE=(SELECT MAX (VP.REVIEWDATE) FROM v_projects@XXXXX VP) 
  AND R.REQUEST_ID=PP.PFM_REQUEST_ID 
  AND RD.BATCH_NUMBER=1

所以几乎我会尝试将 RI.USER_DATA7 与 VP.IDBANK 进行比较,看看 KCRT_REQUESTS_INT 是否有 v_projects@XXXXX 的每一行。

谢谢你的帮助!

4

1 回答 1

0

如果有一个唯一标识符列被定义为主键。如果是,您可以在主键上连接两个表,并查看计数是否与源表上不连接的计数匹配。

假设,表 A 是您的源,表 B 是您加载数据的位置。让 P_key 为主键列。

你可以匹配:

select count(1) 
from Table_A with 

select count (1) 
from Table_A,Table_B 
where Table_A.P_key=Table_B.P_Key

如果它们匹配,则您拥有所有记录。希望这可以帮助。

于 2013-08-27T18:47:02.860 回答