ETL利器Kettle實戰應用解析系列三 【ETL後臺進程執行配置方式】

ETL利器Kettle實戰應用解析系列三 【ETL後臺進程執行配置方式】

本系列文章主要索引如下:

一、ETL利器Kettle實戰應用解析系列一【Kettle使用介紹】

二、ETL利器Kettle實戰應用解析系列二 【應用場景和實戰DEMO下載】

三、ETL利器Kettle實戰應用解析系列三 【ETL後臺進程執行配置方式】

本文主要閱讀目錄如下:

1、簡介Kettle的Kitchen和Span

2、命令行調度任務配置方式

3、後臺進程配置運行方式

4、Windows任務設置

5、Demo下載

 

1、簡介Kettle的Kitchen和Span

前面兩篇文章中主要講述了Kettle的 Spoon的轉換和作業的GUI設計方式以及運行,也給出了Demo實戰,那麼實際上我們的應用模式可能會要求在服務器上以後臺進程的方式運行這個ETL任務,就像我們傳統上一般都是用Windows服務的方式來處理數據一樣,那麼用Kettle我們怎麼去實現呢?這就需要我們瞭解一下Kettle的Kitchen和Span。

 Kitchen——工作(job)執行器 (命令行方式)
 Span——轉換(trasform)執行器 (命令行方式)

這裏我們重點講一下 Kitchen.bat作業執行器 ,這個是經常要用到的。

它是一個作業執行引擎,用來執行作業。這是一個命令行執行工具,它的參數說明如下:

    -rep      : Repository name   任務包所在存儲名
    -user     : Repository username   執行人
    -pass     : Repository password   執行人密碼
    -job      : The name of the job to launch 任務包名稱
    -dir      : The directory (don''t forget the leading / or \) 
    -file     : The filename (Job XML) to launch 
    -level    : The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日誌級別
    -log      : The logging file to write to  指定日誌文件
    -listdir  : List the directories in the repository 列出指定存儲中的目錄結構。
    -listjobs : List the jobs in the specified directory 列出指定目錄下的所有任務
    -listrep  : List the defined repositories 列出所有的存儲
    -norep    : Don''t log into the repository  不寫日誌

2、命令行調度任務配置方式

還是拿我在前面文章中提到的第一個例子來去講一下具體的配置方式,主要的思路就行首先定位到kettle中Kitchen.bat的根目錄,然後執行kitchen命令;

步驟1:首先我們建立一個bat文件,然後點擊編輯進入之後,如下所示,這是定位到Kitchen.bat的目錄;

E:
cd E:\ETL\pdi-open-3.1.0-826

 

步驟2:執行kitchen命令,如下:

kitchen /file:E:\ETL\腳本文件\MyTest.kjb /level:Basic>>D:\MyTest.log

 

這裏注意配正確路徑,然後後面是一個基本的日誌模式,後面也需要配置日誌的輸出路徑;

3、後臺進程配置運行方式

前面我們已經把bat文件建立起來了,這時候我們可以以bat方式運行我們的ETL任務了,不過它的問題是服務器桌面上永遠有個黑CMD屏幕,而且不能關,怎麼讓Bat在屏幕上消失而後臺還能運行呢?具體方法有很多種這裏介紹兩種:

方法一

  bat裏有隱藏窗口的命令,很簡單,只需要在代碼頭部加一段代碼就可以了。 

  @echo off 

  if "%1" == "h" goto begin 

  mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 

  :begin 

  ::下面是你自己的代碼。

方法二

  在你批處理的相同目錄下新建一個記事本,裏面輸入: 

  DIM objShell set objShell=wscript.createObject("wscript.shell") 

  iReturn=objShell.Run("cmd.exe /C c:\1.bat", 0, TRUE)   

  (其中win.bat爲你自己的批處理名字,自己改)

  然後把這個記事本保存爲後綴名爲.vbe的文件,到時候你只要運行這個vbe文件就達到目的了!

  可以寫的簡單點: 

  Set ws = CreateObject("Wscript.Shell") 

  ws.run "cmd /c c:\1.bat",0 

  或者 

  CreateObject("WScript.Shell").Run "cmd /c c:\1.bat",0 

  (這種寫法很多殺軟報毒, 需要替換參數0) 

  最後那個0是指窗口參數,用法爲:

  0 隱藏窗口並激活另一窗口。 

  1 激活並顯示一個窗口。若窗口是最小化或最大化,則恢復到其原來的大小和位置。 

  2 激活窗口並以最小化顯示該窗口。 

  3 激活窗口並以最大化顯示該窗口。 

  4 按窗口最近的大小和位置顯示。活動窗口保持活動。 

  5 以當前大小和位置激活並顯示窗口。 

  6 最小化指定窗口並激活按 Z 序排序的下一個頂層窗口。 

  7 最小化顯示窗口。活動窗口保持活動。 

  8 以當前狀態顯示窗口。活動窗口保持活動。 

  9 激活並顯示窗口。若窗口是最小化或最大化,則恢復到原來的大小和位置。在還原應用程序的最小化窗口時,應指定該標誌。

4、Windows任務設置

經過前面的兩步,我們已經可以讓ETL作業在服務器上無聲無息的運行了,但是如何自由調度呢,我們再結合windows的任務計劃即可,這裏不再贅述!

5、Demo下載

ETL腳本.bat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章