oracle中兩張表資料比較

2021-08-29 10:40:53 字數 1277 閱讀 3986

資料庫:oracle

在某些情況下,我們會需要比較兩張表的資料是否一樣。

假設有兩張表a與表b他的字段相同,但是當中的資料可能不同,而且有些欄位的資料還有可能為空

方法一(手動):把需要比較的兩張表的資料按照某種規則排序後匯出為xls,這裡我直接用pl/sql developer匯出

然後用把xls檔案轉換成txt檔案,這裡我用的是batconv轉換公式

現在我們就有了兩個txt檔案。

然後用beyond compare檔案比較器比較內容。

優點:資料差異一目了然,缺點:比較費時。

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

建立表的語句:

create table formula(

id varchar2(50) primary key--自動生成的,唯一的。

formulaname varchar2(50),

formulacontent varchar2(2000),

formulatype varchar2(20),

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

一般情況下我們可以用

select * from formula a where not exists (select * from formula b where a.formulaname=

b.formulaname and a.formulacontent=b.formulacontent and a.formulatype=b.formulatype)

在oracle 情況下如果兩張表的某個欄位都為null則其通過a.*=b.*是比較不出來的。

因此要額外加上這樣的判斷or(a.formulacontent is null and b.formulacontent is null) or

(a.fomrulaname is null and b.fomrulaname is null) or (a.formulatype is null and b.fomrulatype is null)

通過上面這個sql語句我們就可以找在a表中存在,但在b表中不存在的資料

反過來可以查詢在b表中存在,但在a表中不存在的資料。

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

若這兩張表在不同的資料庫,則要通過建立dblink,可以參見我的轉貼

優點:資料比較快,特別是在資料量比較大的資料優勢更加明顯,

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

不足之處還請大家指出

oracle兩張表的資料比較

資料庫 oracle 在某些情況下,我們會需要比較兩張表的資料是否一樣。假設有兩張表a與表b他的字段相同,但是當中的資料可能不同,而且有些欄位的資料還有可能為空 方法一 手動 把需要比較的兩張表的資料按照某種規則排序後匯出為xls,這裡我直接用pl sql developer匯出 然後用把xls檔案...

oracle兩張表的資料比較

align left align 在某些情況下,我們會需要比較兩張表的資料是否一樣。假設有兩張表a與表b他的字段相同,但是當中的資料可能不同,而且有些欄位的資料還有可能為空 方法一 手動 把需要比較的兩張表的資料按照某種規則排序後匯出為xls,這裡我直接用pl sql developer匯出 然後用...

兩張表關聯比較記錄是否相同

問題 已知兩張表ta tb,這兩張表的表結構完全相同。現在有這樣的要求,ta是根據要求按一定頻率抽取的資料,tb是儲存發生變化的表。每次抽取ta表,都會比較ta tb表,看這兩個表中是否存在完全一樣的資料項值。例子 ta tb的主鍵是ca1,則使用ta和tb表中的其他字段值比較 on ta.ca1 ...