1.同構需求
1.1 將emp表和dept表進行內連接
要實現的結果:
1.導入源表:emp表和dept表。
2.定義目標表:將emp表重命名,加入2個dept的字段,生成sql語句,在edw用戶下創建表。
3.創建映射:
刪除原本連着各自源表的源限定符,新建一個源限定符同時選擇兩張源表。
設置屬性爲兩張表的deptno相等。
在端口我們只保留emp的deptno字段,刪除dept的deptno字段,保存映射。
4.創建任務和工作流,保存,執行,查看結果。
1.2 將emp表和dept表進行右連接
要實現的效果:
我們可以在映射中的源限定符的屬性中定義sql語句。
端口的字段順序要和定義的sql語句的查詢字段的順序一致。
保存映射,重新執行工作流。
但是最終只返回14條數據,我們希望的是右連接返回所有20條數據,查看錯誤說無法將null寫入到empno字段。
原因是我們的源表emp和dept設置了empno爲主鍵,所以需要先刪除主鍵標誌。
目標表查看deptno在非空上也打勾了,需要去掉這個勾,然後重新執行sql語句,在edw用戶下重新創建表格。
重新刷新映射,創新創建任務和工作流,執行後,發現沒有問題了。
查看edw用戶的數據導入情況也正常了。
2.異構需求
2.1 使用oracle的emp表和mysql的dept表進行連接
1.從mysql中導入dept表
重新定義odbc驅動,去連接mysql。選擇系統DSN,如果彈出警告說非管理權限,就使用管理員模式重新打開D客戶端。
點擊確定後,設置連接mysql,以及dept表所在的數據庫
ODBC源選擇剛剛創建的mysql,用戶名是連接mysql的用戶名和密碼。
然後導入mysql的dept表。
2.定義目標表:edw_emp_join_dept_yigou
3.創建映射:
使用連接器轉換組件joiner來關聯兩個不同數據庫的源表。
數據類型不一致,需要轉換數據類型。將mysql的deptno的數據類型轉換成和oracle的deptno一致,使用表達式組件。
重新使用連接器轉換組件joiner來關聯兩個不同數據庫的源表,設置oracle的deptno和mysql的deptno相等。
連接目標表,保存映射。
4.創建任務和工作流:
創建任務,新建mysql的dept表的源表對象。
雙擊任務,分別編輯源表和目標表所屬的表對象。
創建工作流,保存,執行後,在edw用戶下就能看到異構數據庫連接的數據。
3.同構與異構總結
同構是兩個源表連接一個源限定符。
異構是兩個源表分別連接源限定符,再通過連接器轉換組件將兩者連接。
表的連接方式
主從表可以在轉換器組件中自定義更換