oracle兩張表的資料比較

2021-08-29 14:43:43 字數 1174 閱讀 4086

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

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

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

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

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

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

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

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

建立表的語句:

create table student(

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

stuname varchar2(50),

stucontent varchar2(2000),

stutype varchar2(20),

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

一般情況下我們可以用

select * from studenta a where not exists (select * from studentb b where a.stuname = b.stuname and a.stucontent = b.stucontent and a.stutype = b.stutype)

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

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

(a.stuname is null and b.fomrulaname is null) or (a.stutype is null and b.stutype is null)

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

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

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

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

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

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

oracle兩張表的資料比較

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

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...