首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2/400 (IBM i) 比較兩個 Library 物件差異的 SQL 方法

     編輯:DB2 教學

場景

生產 Library (PRCDB) 與測試 Library (TESTDB) 各含數千物件,需找出存在於測試庫但不在生產庫的物件。

操作步驟

  1. 將兩個 Library 的物件清單匯出至臨時表:
    DSPOBJD OBJ(TESTDB/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE) OUTFILE(YNLIB/FILE1) DETAIL(*BASIC)
    DSPOBJD OBJ(PRCDB/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE) OUTFILE(YNLIB/FILE2) DETAIL(*BASIC)
  2. 進入 SQL 介面:STRSQL
  3. 執行差集查詢:
    SELECT ODOBNM FROM YNLIB/FILE1
    WHERE ODOBNM NOT IN (SELECT ODOBNM FROM YNLIB/FILE2);

說明

  • DSPOBJD 為 IBM i 原生命令,OUTPUT(*OUTFILE) 可將物件屬性導出資料庫表。
  • ODOBNM 欄位儲存物件名稱。
  • 此法同樣適用於比較物件類型、建立者、建立時間等屬性差異。

進階變體

-- 找出兩邊都有但屬性不同的物件
SELECT A.ODOBNM, A.OOBJTP, B.OOBJTP
FROM YNLIB/FILE1 A JOIN YNLIB/FILE2 B ON A.ODOBNM = B.ODOBNM
WHERE A.OOBJTP <> B.OOBJTP;

-- 使用 EXCEPT (IBM i 7.1+ 支援)
SELECT ODOBNM FROM YNLIB/FILE1
EXCEPT
SELECT ODOBNM FROM YNLIB/FILE2;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved