1. 程式人生 > >kettle之------ 多表資料複製

kettle之------ 多表資料複製

需求:把A庫中N個表抽取至B庫中,表結構相同或只是增加統一的一些欄位, 過濾條件基本類似。

解決方法:
我們把以上內容在解決問題上拆分為二步,
1,從一配製表中讀出相應的表名及過濾條件,存於一結果。
2,根據第一步的結果,一條條迴圈來進行取數插數的過程。
以上過程相當簡單,以下為討論的實現方式。
1,如果是ORACLE 同字符集,用DBLINK結合著儲存過程,寫一個通用的程式很容易搞定,只需要建立一個表名及過濾條件的配製表(在此就不多說了)。
2,用ETL工具實現,據我所知,以infa為例,它以欄位為對應關係,且它的流程內部迴圈相當困難,曾經我們有個專案,infa就是硬生生的畫了一二百個mapping(的確,不會累死人,但看著相當不爽,當然,歡迎提供好的方案),

在此,我們以kettle為例進行分析,如何解決這個問題(先拋開效能,kettle的確是個好東西)

1),主流程大概是如下這樣的
1.PNG 
在此,我們再看一下第一元件(得到多表表名)裡面內容, 2.PNG 我們再看一下得到表名中的內容3.PNG 
這其中的sql只是模擬一個得到表名的sql,可靈活使用, 這個元件其實就完成了把要抽取的表放入一個結果集中了。
我們再看第二個元件(表遷移)
5.PNG 就是一個取數一個插數的過程。
再看一下它們的內容
4.PNG 
在此就完成了,但是,我們主job設定(表遷移)元件時,也就是把前面的內容當後面的引數迴圈執行。
6.PNG 
基本就是如此,另,記得在各主流程及二轉換中都設定tt_tab這個引數。
說了這麼多,其實很簡單。如果你是要做資料庫表複製的話,kettle有其它的方式,可以根據工具-》嚮導-》複製表嚮導完成。

以上這種適應的是,可實現一些sql的拼接,且要增加減少表時只需求維護配製表了,相對來說會變的簡單。。

相關推薦

kettle------ 資料複製

需求:把A庫中N個表抽取至B庫中,表結構相同或只是增加統一的一些欄位, 過濾條件基本類似。解決方法:我們把以上內容在解決問題上拆分為二步,1,從一配製表中讀出相應的表名及過濾條件,存於一結果。2,根據第一步的結果,一條條迴圈來進行取數插數的過程。以上過程相當簡單,以下為討論

一步一步學MySQL----16 資料記錄查詢子查詢

16.1 為什麼使用子查詢 日常工作中,經常會用到多表查詢,而在進行多表查詢時,首先會對兩個表進行笛卡爾積操作,然後再選取符合匹配條件的資料記錄。在進行笛卡爾積操作的時候,會生成兩個資料表中資料記錄數的乘積條資料記錄。如果這兩個表的資料記錄比較大,則在進行笛卡爾積操作時就會造

一步一步學MySQL----15 資料記錄查詢合併查詢

在MySQL中通過關鍵字 union來實現並操作,即可以通過 union將多個select語句查詢合併在一起組成新的關係。 下面的例項基於資料庫company,有如下兩張表: (1) 計算機系的學生表:cstudent (2) 音樂系的學生表:mstuden

MySQL操作

cnblogs lec 外連接 自然連接 中軟 outer esc convert not in 前言:之前已經針對數據庫的單表查詢進行了詳細的介紹:MySQL之增刪改查,然而實際開發中業務邏輯較為復雜,需要對多張表進行操作,現在對多表操作進行介紹。 前提:為方便後面的操作

oracle學習查詢,子查詢以及事務處理

color 1-1 註意事項 員工 列數 .com 外連接 分析 top-n分析 多表查詢的基礎是采用笛卡爾集: 最終的行數 = 表1的行數 * 表2的行數 最終的列數 = 表1的列數 + 表2的列數 過濾笛卡爾集的關鍵是寫連接條件,N張表至少需要N-1個條件。 多表

MVC+EF關聯數據更新

選項 數據 返回 tro view ont 方式 自動 連接 多表關聯數據更新關聯數據有兩種:一種是一對多,一種總是多對多eg:假設一個用戶可以有任意多個角色,一個角色可以有任意多個用戶。 下面來實現編輯某個用戶時,顯示該用戶的角色進行編輯。步驟:1.先添加一個ViewMo

Oracle ODI 12c聯合查詢以及定時任務設置

Oracle ODI 本文介紹如何通過ODI進行多表聯合查詢並設置定時任務。準備工作如下: 準備物理方案和邏輯方案; 創建模型並通過“逆向工程”同步方案; 創建項目(根據實際情況創建或者使用現有的); 確保源表和目標表都有主鍵存在。以上內容的前三點可以參考我博客中的相關文章。 一、Preparing

編程路:MySql系列查詢

所有 連接 進行 查看 bsp 關鍵字 right emp 字段 多表連接查詢 #重點:外鏈接語法 SELECT 字段列表 FROM 表1 INNER|LEFT|RIGHT JOIN 表2 ON 表1.字段 = 表2.字段; 交叉連接:不適用任何匹配條

mysql數據操作查詢

子查詢 any 資源 splay having span left join 返回 union 一:介紹 主題:   多表連接查詢   符合條件連接查詢   子查詢 準備表 #建表 create table department( id int, name varcha

數據庫查詢

distinct -- dep col 基礎 基礎上 sna 右連接 color 一 ,多表查詢 1、內連接:把兩張表有對應關系的記錄連接成一張虛擬表 select * from emp inner join dep on emp.dep_id = dep.id;

MySQL查詢

lap max not 包含 one 插入記錄 比較運算符 ffice create 一,多表連接查詢 ex:創建2張表 部門表(department)、員工表(employee) create table department( id int, name varcha

hibernate框架學習查詢helloworld

nat student 查詢 get span bsp object from ber package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hi

ASP.NET Aries 高級開發教程:Excel導入高級導入配置(中)

lis 數據庫 名稱 教程 配置 rdquo net 列名 邏輯 前言: 在面對Excel的各種復雜導入情況中,多表導入是很常見的情景。 今天就來寫一下多表導入是如何配置的。 1、自定義導入模板 怎麽自定義: 其實就是自己新建一個Excel了,把列頭都寫好。

MySQL

一個人 個數 mys 存在 ner 插入數據 現在 例如 reat 前提準備:   首先創建一個數據庫test,再在test裏創建兩個數據表:grad(班級)和student(學生表) 創建數據庫:CREATE DATABASE test; 選擇要操作的數據表:USE te

MySQL查詢練習

info 工資 join ada 員工 ear 利潤表 mgr 沒有 一、表格 表一 emp 表二 dept 表三 salgrade; 表四 年度利潤表 二、習題 1. 查出至少有一個員工的部門。顯示部門編號、部門名稱、部門位置、部門人數。 2. 列出所有員

mysql查詢的其他查詢

1,臨時表查詢 (1)需求:查詢高於本部門平均工資的人員 select * from person as p, (select dept_id, avg(salary) as '平均工資' from person GROUP BY dept_id) as ptable where p.dept_

Django 模型層操作

一.建立模型 例項: 作者表: 擁有欄位:姓名(name),性別(sex),該表與書籍表之間為多對多的關係 作者詳情表: 擁有欄位:地址(addr),手機號(phone),該表與作者表之間為一對一的關係 出版社表: 擁有欄位:名字(name),地址(addr),該表與書籍表之間為一

模型層操作

        一:建立模型 1 例項: 我們來假定下面這些概念,欄位和關係 作者模型:一個作者有姓名和年齡。 作者詳細模型:把作者的詳情放到詳情表,包含生日,手機號,家庭住址等資訊。作者詳情模型和作者模型之間是一對一的關係(one-to-one) 出

Django模型層操作

一、建立多表模型 例項: 作者表: 擁有欄位:姓名(name),性別(sex),該表與書籍表之間為多對多的關係 作者詳情表: 擁有欄位:地址(addr),手機號(phone),該表與作者表之間為一對一的關係 出版社表: 擁有欄位:名字(name),地址(addr),該表與書籍

django查詢與創建

紅樓夢 查找 手機 正向 地址 move *** () div https://www.cnblogs.com/liuqingzheng/articles/9499252.html # 一對多新增數據 添加一本北京出版社出版的書 第一種方式 re