- Well-formed XML 文件:
- 沒有對應的 DTD 或 XML Schema。
- 只需符合 Well-formed XML 規則。
- Valid XML 文件:
- 有對應 DTD 或 XML Schema。
- 除符合 well-formed XML 規則外,文件內容結構須符合 DTD 或 XML Schema 之規範。
先匯入 Document Type Definition ( DTD ),在 Object Library 切換至 Formats 頁籤,滑鼠右鍵點擊 DTDs 並點選 New,會出現一個 Import DTD Format 的對話方塊。
輸入 DTD definition name ,瀏覽至 DTD 的 File name ,在 File Type 使用預設的 DTD 選項,選擇 Root element name 有下拉選單中選取。
將剛建立的 DTDs 下的物件拖拉至工作區中,並設定為 Make XML File Source,在 Source 頁籤 XML file 中指定 XML 檔案位置,並勾選 Enable validation 讓 DTD 檢查 XML 的格式是否正確。
由工具列中拖拉一個 Query Transform 物件及在 Datastores 中將資料表拖拉至工作區,並選擇 Make Target,拖拉之間的連結。
打開 Query 的編輯器,將 DTD 結構的元素對應至資料表中,但無法將巢狀的欄位對應至資料表中。將 Schema Out 中將五個欄位剪下至剪貼簿中 ( Cut 剪下而不是使用 Delete 刪除 ),因後續要將這些欄位名稱及資料型態貼回適當的位置中。
從 Schema In 中將 MTRL_MASTER schema 拖拉至 Schema Out 中。
在輸出結構中 ( 右邊視窗 ) ,滑鼠右鍵點選 MTRL_MASTER選取 Make Current ,才能編輯。
選取所有的欄位,從 MTRL_ID 以下刪除,巢狀結構的部分要選取上層節點,也刪除 HAZMAT_IND 這個 Schema,在 TEXT 這個 Schema 下的欄位皆刪除,包含 TEXT_nt_1。若遇到不能編輯時,請先點選所屬的 Schema,按右鍵選擇 Make Current。最後在 MTRL_MASTER 上按右鍵 Paste 剛才剪下的目標資料表的欄位。
重新配對欄位資料
Schema Out 中 SHORT_TEXT 的目標欄位必須對應至 Schema In 位於 TEXT 巢狀節點內的 SHORT_TEXT。為了擷取 Schema Out 的 SHORT_TEXT 欄位名稱及資料型態,先將其剪下至剪貼簿。
將 Schema Out 中,點選 TEXT 按右鍵貼上。
將 Schema In 中的 SHORT_TEXT 對應至 Schema Out 中。
Schema In 中是巢狀的資料,無法轉至非巢狀的資料表中,所以必須在 Schema Out 中,將 TEXT 轉為 Unneset。其圖示會出現一個小箭頭。
Schema Out 中還有兩層,所以 MTRL_MASTER 也要進行 Unnest。
執行 JOB 可以看到成功的訊息!!
在資料庫中也可以看到資料已匯入
DTD 及 XML 檔案如下圖所示
PS.後來實作比較快的做法如下:
將資料來源、Query Transform 及目的資料表物件拉好。
在資料來源的 File Type 使用預設的 DTD 選項,選擇 Root element name 有下拉選單中選取。並指定 XML 檔的位置於 File name 中。( 執行 JOB 時,須將相關檔案置於 Server 中 )
點選 Query Transform 進入編輯。刪除 Schema Out 中所有資料表欄位。
再將 Schema In 中的拖拉 MTRL_MASTER 至 Schema Out 中。
在 Schema Out 中,將目的資料表沒有的欄位刪除,若有無法編輯時,點選右鍵選 Make Current。
修改 Schema Out 中的 Data Type 與資料表的一致。
執行 JOB 成功後,可點選目標資料表進行檢視
沒有留言:
張貼留言