如何復制BLOB的數據類型_第1頁
如何復制BLOB的數據類型_第2頁
如何復制BLOB的數據類型_第3頁
如何復制BLOB的數據類型_第4頁
全文預覽已結束

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、標題如何將DB2數據庫中的大對象(BLOB,CLOB)數據類型復制到Oracle數據庫中 環境Windows, db2 8.2, Websphere information integrator 8.2(以下簡稱WII)問題描述WII中對LOB對象的復制支持僅限于DB2的數據庫。具體的限制請參考:對非DB2數據庫的數據復制, 不直接支持LOB(BLOB,ClOB)等大對象數據類型,但在實際應用中,用戶需要復制的表中有可能有BLOB等大對象數據,如果數據目標為Oracle,這類大對象復制的需求可通過對WII的復制進行特殊配置實現。下面以一個實際的例子來說明如何將DB2中的BLOB數據類型復制到O

2、racle中。解答基本思路:通過WII的聯邦能力,先把DB2數據源表中的非BLOB字段復制到目標表中,對于 BLOB字段,在每個復制周期完成后,增加一個對目標記錄BLOB字段的update操作,直接把數據源的BLOB數據更新到數據目標的BLOB數據中。其中的關鍵步驟就是如何區分在數據目標表中,哪些記錄需要更新,哪些不需要更新。為解決這個問題,可以在數據目標表上增加一個標志字段flag,該字段對應復制處理的計算字段,賦為常量值“1”, 然后在更新數據目標BLOB字段的Update語句的Where條件中使用此標志字段進行比較,flag 為“1”的記錄則進行變量BLOB更新,在更新BLOB數據的同時

3、,將該標志字段置為非“1”的值,以避免重復更新。具體的解決步驟:1)假設有一個需要進行復制的DB2源表EMP_PHOTO 有以下3個字段,其中主鍵為(EMPNO, PHOTO_FORMAT)DB2 CREATE TABLE EMP_PHOTO ( EMPNO CHAR(6) NOT NULL , PHOTO_FORMAT VARCHAR(10), PICTURE BLOB(102400) , PRIMARY KEY (EMPNO, PHOTO_FORMAT) )2)采用跟普通復制相同的步驟,分別在DB2源數據庫中創建Capture控制表,在目標數據庫Oracle中創建Apply控制表。3)將E

4、MP_PHOTO表注冊到復制的數據源中。4)定義從數據源EMP_PHOTO到Oracle目標表的預定集,假設Oracle中使用的目標表名稱為REP.TGEMP_PHOTO,同時在DB2中產生的目標表的昵稱為ORA817.TGEMP_PHOTO。5)將EMP_PHOTO添加到復制成員中,同時增加計算列flag,將其設置為常量值“1”,生成執行腳本并運行。添加計算列的過程如下圖所示: 點擊“添加計算列”按鈕:在目標列中,輸入這個計算列的名稱:FLAG,同時將這個計算列指定成常量1,生成相應的腳本,并運行。這樣目標表中就多了一個值為常量“1”的 flag 字段。6)在Oracle中復制的目標表為tg

5、emp_photo, 其昵稱為ora817.tgemp_photo。由于WII不直接支持BLOB字段類型,所以ora817.tgemp_photo中沒有BLOB字段,我們需要手動的在目標表中添加這個列。在目標表中增加BLOB字段:set passthru ora817 ;ALTER TABLE REP.TGEMP_PHOTO ADD(PICTURE BLOB );set passthru reset;由于昵稱 ora817.tgemp_photo已經存在了,但是目標表的結構已經發生了變化,因此我們需要為復制的目標表重新創建昵稱,使其包含BLOB列:drop nickname ora817.tg

6、emp_photo;create nickname ora817.tgemp_photo for ora817.REP.TGEMP_PHOTO;完成后,目標tgemp_photo表結構如下:EMPNO CHAR(6) not null, PHOTO_FORMAT VARCHAR(10)FLAGintegerPICTURE BLOB(102400) 在預定集屬性中增加對BLOB字段更新的update語句:UPDATE ora817.tgemp_photo T SET (flag, picture) = (SELECT 0, picture FROM emp_photo S WHERE S.emp

7、no = T.empno and S. photo_format =T. photo_format and flag = 1);注意,這里的(empno, photo_format)是表的主鍵,Where條件中對標志字段進行比較,對flag為“1”的記錄,將進行picture字段的BLOB更新,在更新BLOB數據的同時,將該標志字段置為非“1”的值,如“0”,以避免重復更新。另外,要在SQLSTATE欄中添加02000,以允許返回空行。該錯誤號代表的具體信息為:SQLSTATE 02000: 發生下述異常之一:SELECT INTO 語句或 INSERT語句的子查詢的結果為空表。在搜索的 UPDATE 或 DELETE 語句內標識的行數為零。在FETCH 語句中引用的游標位置處于結果表最后

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論