Oracle數(shù)據(jù)比較的兩大妙招
我們是以Oracle兩張表的比較來說明Oracle數(shù)據(jù)的比較。這兩張表的Oracle數(shù)據(jù)的比較是可以用我們經(jīng)常使用的方法,即手動(dòng)的方法,來對(duì)其進(jìn)行比較,或是通過SQL語句來比較,兩種方法各有所長。
在某些情況下,我們會(huì)需要比較兩張表的數(shù)據(jù)是否一樣。
假設(shè)有兩張表A與表B它們的字段相同,但是當(dāng)中的Oracle數(shù)據(jù)可能不同,而且有些字段的數(shù)據(jù)還有可能為空。
方法一(手動(dòng)):
把需要比較的兩張表的數(shù)據(jù)按照某種規(guī)則排序后導(dǎo)出為xls,這里我直接用PL/SQL Developer導(dǎo)出。然后用把xls文件轉(zhuǎn)換成txt文件,這里我用的是batconv轉(zhuǎn)換公式?,F(xiàn)在我們就有了兩個(gè)txt文件。然后用beyond compare文件比較器比較內(nèi)容。
優(yōu)點(diǎn):Oracle數(shù)據(jù)差異一目了然
缺點(diǎn):比較費(fèi)時(shí)。
方法二(通過Sql語句來比較):
創(chuàng)建表的語句:
- create table formula(
- id varchar2(50) primary key
自動(dòng)生成的,唯一的。
- formulaName varchar2(50),
- formulaContent varchar2(2000),
- formulaType varchar2(20),
- )
當(dāng)中除id不為空,其它三項(xiàng)均可能為空。
在oracle 情況下如果兩張表的某個(gè)字段都為null則其通過A.*=B.*是比較不出來的。通過上面這個(gè)sql語句我們就可以找在A表中存在,但在B表中不存在的數(shù)據(jù)反過來可以查詢?cè)贐表中存在,但在A表中不存在的數(shù)據(jù)。若兩個(gè)查詢都為空,則說明兩張表的相應(yīng)字段完全相同。
若這兩張表在不同的數(shù)據(jù)庫,則要通過建立DBLink。
優(yōu)點(diǎn):Oracle數(shù)據(jù)比較快,特別是在數(shù)據(jù)量比較大的數(shù)據(jù)優(yōu)勢更加明顯,
缺點(diǎn):比較時(shí)不能很快看出兩張表的差異。因?yàn)椴樵兊闹皇钱?dāng)中的某一張表。
【編輯推薦】
- Oracle數(shù)據(jù)庫中的時(shí)間處理的實(shí)際操作步驟
- Oracle表中數(shù)據(jù)導(dǎo)出成 Txt格式的方案
- Oracle臨時(shí)表用法的經(jīng)驗(yàn)心得
- Oracle數(shù)據(jù)文件的特性介紹
- Oracle修改字段類型2種方案介紹