資料庫: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 ...