oracle兩張表的資料比較

2021-08-29 14:42:37 字數 1225 閱讀 9145

資料庫: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兩張表的資料比較

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

oracle中兩張表資料比較

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

比較兩張表的資料是否一致

兩張表的結構相同,要比較兩張表的資料是否一致 例如 a表中列有 id,name,age b表中列有 id,name,age select b.id from a,b where a.name b.name and a.age b.age 以上的sql語句可以查出a,b兩個表中的相同資料。下面的sql...