kettle通過命令列引數傳遞資料庫連線資訊

jerry741發表於2020-09-29

在用kettle進行資料庫資料同步時,需要設定資料庫連線資訊,但是一般開發環境和生產環境資料庫不一樣,如果在開發階段把資料庫連線資訊寫死,那麼在生產環境部署時又要重新開啟.krt或.kjb檔案重新編輯資料庫連線資訊。解決方法是資料庫連線資訊可以通過命令列引數傳入,這樣只需要在啟動時改變一下引數就可以了。下面以配置一個簡單的表輸入為例來說明。

新建一個轉換,資料庫連線資訊設定如下,注意我們都是用的變數,沒有寫死資料庫連線資訊。這裡說個小插曲,如果我們定義的資料庫連線沒有在轉換中用到,那麼下次開啟檔案的時候這個定義的資料庫連線就會消失,不得不吐槽這設計。。。

接下來我們定義一個轉換,隨便從資料庫查點什麼。

接下來在檔案空白處右鍵,選擇“轉換設定”,在命名引數標籤下設定我們剛才用到的4個引數。這個引數還可以設定預設值,也就是我們在命令列不指定引數值時會用預設值,我這裡就先不設定了。

以上都設定好後,儲存檔案,然後輸入如下命令執行即可將引數傳入.ktr檔案中進行使用。這裡為了後期方便修改引數值,我設定了一些bat相關的變數。命令列有一個地方一定要注意,/param:"xxx=xxx"這裡的雙引號不能省略,我就在這裡踩坑了,不加雙引號引數是傳遞不了的。

:: kettle軟體安裝路徑
set kettlePath=E:\zzj\apps\data-integration
:: *.kjb檔案存放路徑
set jobPath=E:\zzj\javaweb\ETL
:: 資料庫連線url
set dbUrl=localhost
:: 資料庫名
set dbName=mybatis
:: 資料庫連線使用者名稱
set dbUsername=root
:: 資料庫連線密碼
set dbPassword=123456
%kettlePath%\pan /file %jobPath%\test.ktr /param:"db_url=%dbUrl%" /param:"db_name=%dbName%" /param:"db_username=%dbUsername%" /param:"db_password=%dbPassword%"

執行成功

 

 

相關文章