熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle兩張表的數據比較

2013-11-13 22:20:14  來源: Oracle 

  在某些情況下我們會需要比較兩張表的數據是否一樣

  假設有兩張表A與表B它們的字段相同但是當中的數據可能不同而且有些字段的數據還有可能為空

  方法一(手動)把需要比較的兩張表的數據按照某種規則排序後導出為xls這裡我直接用PL/SQL Developer導出

  然後用把xls文件轉換成txt文件這裡我用的是batconv轉換公式

  現在我們就有了兩個txt文件

  然後用beyond compare文件比較器比較內容

  優點數據差異一目了然缺點比較費時

  方法二(通過Sql語句來比較)

  創建表的語句          create table formula(
          id varchar() primary key自動生成的唯一的
          formulaName varchar()
          formulaContent varchar()
          formulaType varchar()
          )

  當中除id不為空其它三項均可能為空

  一般情況下我們可以用          select * from formula A where not exists (select * from formula B where AformulaName=
          BformulaName and AformulaContent=BformulaContent and AformulaType=BformulaType)

  在oracle 情況下如果兩張表的某個字段都為null則其通過A*=B*是比較不出來的

  因此要額外加上這樣的判斷          or(AformulaContent is null and BformulaContent is null) or
          (AfomrulaName is null and BfomrulaName is null) or (AformulaType is null and BfomrulaType is null)

  通過上面這個sql語句我們就可以找在A表中存在但在B表中不存在的數據

  反過來可以查詢在B表中存在但在A表中不存在的數據

  若兩個查詢都為空則說明兩張表的相應字段完全相同

  若這兩張表在不同的數據庫則要通過建立DBLink

  優點數據比較快特別是在數據量比較大的數據優勢更加明顯

  缺點比較時不能很快看出兩張表的差異因為查詢的只是當中的某一張表


From:http://tw.wingwit.com/Article/program/Oracle/201311/18808.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.