Kettle實現從數據庫中提取數據到Excel

由於有個平常提數,工做日天天都要從數據庫中提取數據,轉換爲excel,再以郵件的形式發給用戶。mysql

恰好近期同事在研究使用kettle自動提數且完成郵件的發送,以爲很實用又挺有意思的就學了一下這個技能~sql

 

首先咱們須要新建 轉換 數據庫

轉換: 能夠將數據從數據庫中提取到excel中 oracle

 

而後咱們若是想要定時提取數據的話,能夠新建 做業測試

做業: 能夠定時執行轉換任務,而後還能夠將發送郵件耶~ (不過這個技能我還不是很熟悉,等我熟悉了再更新嘻嘻)lua

 

一 、 新建轉換3d

1.點擊 + 號 ,也就是新建 ,而後選擇 轉換excel

 

2. 從 核心對象 視圖切換爲 主對象樹 , 而後開始創建咱們的數據庫鏈接orm

雙擊 DB鏈接,會出現下圖標記的 3 彈窗server

填寫數據庫鏈接信息,我這裏選擇鏈接oracle數據庫,必要填寫的信息爲紅色標記框所標記的  數據庫ip  數據庫名 端口號 用戶名 密碼

 

 

3.數據庫信息填寫完後咱們能夠點擊測試按鈕,看看是否能正常鏈接(提示爲 正確鏈接到數據庫【test】,表示信息填寫沒有問題)

 

4. 切換視圖: 主對象樹  切換到 核心對象,咱們開始設立咱們的輸入與輸出

 

 

 5. 輸入 : 咱們 從輸入的子菜單中選擇  表輸入

雙擊 表輸入,會在右側出現 表輸入圖標

雙擊右側表輸入圖標,再次出現 下圖標記4出現的彈窗

 

 

6. 在彈窗中,咱們開始定義輸入相關信息啦

關於sql語句,咱們還有一點須要注意,就是日期形式的數據須要定義一下,否則導出的數據就會數值類型啦(49165..相似的)

oracle: to_char('2019-05-05','yyyy-MM-dd')

mysql: DATE_FORMAT('2019-05-05',''%Y-%m-%d')

 

7. 輸入定義好後,咱們開始定義輸出啦。 這裏咱們選擇以excel的形式輸出數據

選擇核心對象下的 輸出,雙擊輸出下的子菜單 Microsoft Excel輸出 ,會出現右側的輸出圖標

雙擊右側的輸出圖標,出現右側 5標記的彈窗信息

 

8.定義詳細的輸出

選定輸出文件的位置,若是不寫絕對路徑則會輸出在 kettle啓動文件 Sqoon.bat的統計目錄下

下面記得選中Excel 2007 and above

最後點擊肯定

 

9.點擊執行按鈕,而後就根據提示選擇 保存

 

10. 執行轉換

 

 11.執行成功後,咱們回到桌面就會看到剛剛保存的文件啦~

 

2、新建 做業

1.點擊 + 號,而後選擇 做業

 

 

2.選擇通用, START (雙擊,出現右側開始圖標)

 

3.在 START裏面定義 怎麼執行(我這裏定義爲天天9點執行)

 

 

4.雙擊通用下的 轉換

 

5.配置轉換相關信息

選中咱們剛剛配置好的轉換信息(保存位置看你本身以前保存在哪裏哦,我是放在了桌面~) ,最後選擇肯定便可

 

6.點擊執行,會要求咱們先保存這次編輯的 做業信息 ,以下圖

 

7. 保存好後,咱們能夠再次啓動,運行啦~  (其實還能夠導入文件 test.kjb)

 

最後提供一個發送郵件的 testzip.kjb  示例 (可直接使用kettle打開,更改郵件服務配置信息便可運行)

<?xml version="1.0" encoding="UTF-8"?>
<job>
  <name>testzip</name>
  <description />
  <extended_description />
  <job_version />
  <directory>/</directory>
  <created_user>-</created_user>
  <created_date>2019/06/17 11:35:43.098</created_date>
  <modified_user>-</modified_user>
  <modified_date>2019/06/17 11:35:43.098</modified_date>
  <parameters>
    </parameters>
  <slaveservers>
    </slaveservers>
  <job-log-table>
    <connection />
    <schema />
    <table />
    <size_limit_lines />
    <interval />
    <timeout_days />
    <field>
      <id>ID_JOB</id>
      <enabled>Y</enabled>
      <name>ID_JOB</name>
    </field>
    <field>
      <id>CHANNEL_ID</id>
      <enabled>Y</enabled>
      <name>CHANNEL_ID</name>
    </field>
    <field>
      <id>JOBNAME</id>
      <enabled>Y</enabled>
      <name>JOBNAME</name>
    </field>
    <field>
      <id>STATUS</id>
      <enabled>Y</enabled>
      <name>STATUS</name>
    </field>
    <field>
      <id>LINES_READ</id>
      <enabled>Y</enabled>
      <name>LINES_READ</name>
    </field>
    <field>
      <id>LINES_WRITTEN</id>
      <enabled>Y</enabled>
      <name>LINES_WRITTEN</name>
    </field>
    <field>
      <id>LINES_UPDATED</id>
      <enabled>Y</enabled>
      <name>LINES_UPDATED</name>
    </field>
    <field>
      <id>LINES_INPUT</id>
      <enabled>Y</enabled>
      <name>LINES_INPUT</name>
    </field>
    <field>
      <id>LINES_OUTPUT</id>
      <enabled>Y</enabled>
      <name>LINES_OUTPUT</name>
    </field>
    <field>
      <id>LINES_REJECTED</id>
      <enabled>Y</enabled>
      <name>LINES_REJECTED</name>
    </field>
    <field>
      <id>ERRORS</id>
      <enabled>Y</enabled>
      <name>ERRORS</name>
    </field>
    <field>
      <id>STARTDATE</id>
      <enabled>Y</enabled>
      <name>STARTDATE</name>
    </field>
    <field>
      <id>ENDDATE</id>
      <enabled>Y</enabled>
      <name>ENDDATE</name>
    </field>
    <field>
      <id>LOGDATE</id>
      <enabled>Y</enabled>
      <name>LOGDATE</name>
    </field>
    <field>
      <id>DEPDATE</id>
      <enabled>Y</enabled>
      <name>DEPDATE</name>
    </field>
    <field>
      <id>REPLAYDATE</id>
      <enabled>Y</enabled>
      <name>REPLAYDATE</name>
    </field>
    <field>
      <id>LOG_FIELD</id>
      <enabled>Y</enabled>
      <name>LOG_FIELD</name>
    </field>
    <field>
      <id>EXECUTING_SERVER</id>
      <enabled>N</enabled>
      <name>EXECUTING_SERVER</name>
    </field>
    <field>
      <id>EXECUTING_USER</id>
      <enabled>N</enabled>
      <name>EXECUTING_USER</name>
    </field>
    <field>
      <id>START_JOB_ENTRY</id>
      <enabled>N</enabled>
      <name>START_JOB_ENTRY</name>
    </field>
    <field>
      <id>CLIENT</id>
      <enabled>N</enabled>
      <name>CLIENT</name>
    </field>
  </job-log-table>
  <jobentry-log-table>
    <connection />
    <schema />
    <table />
    <timeout_days />
    <field>
      <id>ID_BATCH</id>
      <enabled>Y</enabled>
      <name>ID_BATCH</name>
    </field>
    <field>
      <id>CHANNEL_ID</id>
      <enabled>Y</enabled>
      <name>CHANNEL_ID</name>
    </field>
    <field>
      <id>LOG_DATE</id>
      <enabled>Y</enabled>
      <name>LOG_DATE</name>
    </field>
    <field>
      <id>JOBNAME</id>
      <enabled>Y</enabled>
      <name>TRANSNAME</name>
    </field>
    <field>
      <id>JOBENTRYNAME</id>
      <enabled>Y</enabled>
      <name>STEPNAME</name>
    </field>
    <field>
      <id>LINES_READ</id>
      <enabled>Y</enabled>
      <name>LINES_READ</name>
    </field>
    <field>
      <id>LINES_WRITTEN</id>
      <enabled>Y</enabled>
      <name>LINES_WRITTEN</name>
    </field>
    <field>
      <id>LINES_UPDATED</id>
      <enabled>Y</enabled>
      <name>LINES_UPDATED</name>
    </field>
    <field>
      <id>LINES_INPUT</id>
      <enabled>Y</enabled>
      <name>LINES_INPUT</name>
    </field>
    <field>
      <id>LINES_OUTPUT</id>
      <enabled>Y</enabled>
      <name>LINES_OUTPUT</name>
    </field>
    <field>
      <id>LINES_REJECTED</id>
      <enabled>Y</enabled>
      <name>LINES_REJECTED</name>
    </field>
    <field>
      <id>ERRORS</id>
      <enabled>Y</enabled>
      <name>ERRORS</name>
    </field>
    <field>
      <id>RESULT</id>
      <enabled>Y</enabled>
      <name>RESULT</name>
    </field>
    <field>
      <id>NR_RESULT_ROWS</id>
      <enabled>Y</enabled>
      <name>NR_RESULT_ROWS</name>
    </field>
    <field>
      <id>NR_RESULT_FILES</id>
      <enabled>Y</enabled>
      <name>NR_RESULT_FILES</name>
    </field>
    <field>
      <id>LOG_FIELD</id>
      <enabled>N</enabled>
      <name>LOG_FIELD</name>
    </field>
    <field>
      <id>COPY_NR</id>
      <enabled>N</enabled>
      <name>COPY_NR</name>
    </field>
  </jobentry-log-table>
  <channel-log-table>
    <connection />
    <schema />
    <table />
    <timeout_days />
    <field>
      <id>ID_BATCH</id>
      <enabled>Y</enabled>
      <name>ID_BATCH</name>
    </field>
    <field>
      <id>CHANNEL_ID</id>
      <enabled>Y</enabled>
      <name>CHANNEL_ID</name>
    </field>
    <field>
      <id>LOG_DATE</id>
      <enabled>Y</enabled>
      <name>LOG_DATE</name>
    </field>
    <field>
      <id>LOGGING_OBJECT_TYPE</id>
      <enabled>Y</enabled>
      <name>LOGGING_OBJECT_TYPE</name>
    </field>
    <field>
      <id>OBJECT_NAME</id>
      <enabled>Y</enabled>
      <name>OBJECT_NAME</name>
    </field>
    <field>
      <id>OBJECT_COPY</id>
      <enabled>Y</enabled>
      <name>OBJECT_COPY</name>
    </field>
    <field>
      <id>REPOSITORY_DIRECTORY</id>
      <enabled>Y</enabled>
      <name>REPOSITORY_DIRECTORY</name>
    </field>
    <field>
      <id>FILENAME</id>
      <enabled>Y</enabled>
      <name>FILENAME</name>
    </field>
    <field>
      <id>OBJECT_ID</id>
      <enabled>Y</enabled>
      <name>OBJECT_ID</name>
    </field>
    <field>
      <id>OBJECT_REVISION</id>
      <enabled>Y</enabled>
      <name>OBJECT_REVISION</name>
    </field>
    <field>
      <id>PARENT_CHANNEL_ID</id>
      <enabled>Y</enabled>
      <name>PARENT_CHANNEL_ID</name>
    </field>
    <field>
      <id>ROOT_CHANNEL_ID</id>
      <enabled>Y</enabled>
      <name>ROOT_CHANNEL_ID</name>
    </field>
  </channel-log-table>
  <pass_batchid>N</pass_batchid>
  <shared_objects_file />
  <entries>
    <entry>
      <name>Zip 壓縮文件</name>
      <description />
      <type>ZIP_FILE</type>
      <zipfilename>C:\Users\S0111\Desktop\最新運營中心KPI20190615.zip</zipfilename>
      <compressionrate>1</compressionrate>
      <ifzipfileexists>0</ifzipfileexists>
      <wildcard />
      <wildcardexclude />
      <sourcedirectory>D:\DEV_TOOLS\kettle\pdi-ce-7.1.0.0-12\data-integration\網上保單貸款2019-06-18.xlsx</sourcedirectory>
      <movetodirectory />
      <afterzip>0</afterzip>
      <addfiletoresult>Y</addfiletoresult>
      <isfromprevious>N</isfromprevious>
      <createparentfolder>Y</createparentfolder>
      <adddate>N</adddate>
      <addtime>N</addtime>
      <SpecifyFormat>N</SpecifyFormat>
      <date_time_format>yyyy/MM/dd HH:mm:ss</date_time_format>
      <createMoveToDirectory>N</createMoveToDirectory>
      <include_subfolders>N</include_subfolders>
      <stored_source_path_depth>1</stored_source_path_depth>
      <parallel>N</parallel>
      <draw>Y</draw>
      <nr>0</nr>
      <xloc>368</xloc>
      <yloc>160</yloc>
    </entry>
    <entry>
      <name>START</name>
      <description />
      <type>SPECIAL</type>
      <start>Y</start>
      <dummy>N</dummy>
      <repeat>N</repeat>
      <schedulerType>0</schedulerType>
      <intervalSeconds>0</intervalSeconds>
      <intervalMinutes>60</intervalMinutes>
      <hour>12</hour>
      <minutes>0</minutes>
      <weekDay>1</weekDay>
      <DayOfMonth>1</DayOfMonth>
      <parallel>N</parallel>
      <draw>Y</draw>
      <nr>0</nr>
      <xloc>192</xloc>
      <yloc>176</yloc>
    </entry>
    <entry>
      <name>添加文件到結果文件中</name>
      <description />
      <type>ADD_RESULT_FILENAMES</type>
      <arg_from_previous>Y</arg_from_previous>
      <include_subfolders>N</include_subfolders>
      <delete_all_before>N</delete_all_before>
      <fields>
        <field>
          <name>C:\Users\Administrator\Desktop\報表平臺\kettle每週提數</name>
          <filemask>*.zip</filemask>
        </field>
      </fields>
      <parallel>N</parallel>
      <draw>Y</draw>
      <nr>0</nr>
      <xloc>528</xloc>
      <yloc>176</yloc>
    </entry>
    <entry>
      <name>發送郵件</name>
      <description />
      <type>MAIL</type>
      <server>11.22.33.44</server>
      <port>25</port>
      <destination>duanfeixia@chinalife.com.hk</destination>
      <destinationCc />
      <destinationBCc />
      <replyto>xubo@chinalife.com.hk</replyto>
      <replytoname />
      <subject>嗯嗯嗯嗯</subject>
      <include_date>N</include_date>
      <contact_person />
      <contact_phone />
      <comment>test mail</comment>
      <include_files>Y</include_files>
      <zip_files>N</zip_files>
      <zip_name />
      <use_auth>N</use_auth>
      <use_secure_auth>N</use_secure_auth>
      <auth_user />
      <auth_password>Encrypted </auth_password>
      <only_comment>Y</only_comment>
      <use_HTML>N</use_HTML>
      <use_Priority>N</use_Priority>
      <encoding>UTF-8</encoding>
      <priority>normal</priority>
      <importance>normal</importance>
      <sensitivity>normal</sensitivity>
      <secureconnectiontype>SSL</secureconnectiontype>
      <replyToAddresses />
      <filetypes>
        <filetype>GENERAL</filetype>
      </filetypes>
      <embeddedimages>
      </embeddedimages>
      <parallel>N</parallel>
      <draw>Y</draw>
      <nr>0</nr>
      <xloc>672</xloc>
      <yloc>176</yloc>
    </entry>
  </entries>
  <hops>
    <hop>
      <from>START</from>
      <to>Zip 壓縮文件</to>
      <from_nr>0</from_nr>
      <to_nr>0</to_nr>
      <enabled>Y</enabled>
      <evaluation>Y</evaluation>
      <unconditional>Y</unconditional>
    </hop>
    <hop>
      <from>添加文件到結果文件中</from>
      <to>發送郵件</to>
      <from_nr>0</from_nr>
      <to_nr>0</to_nr>
      <enabled>Y</enabled>
      <evaluation>Y</evaluation>
      <unconditional>N</unconditional>
    </hop>
    <hop>
      <from>Zip 壓縮文件</from>
      <to>添加文件到結果文件中</to>
      <from_nr>0</from_nr>
      <to_nr>0</to_nr>
      <enabled>Y</enabled>
      <evaluation>Y</evaluation>
      <unconditional>N</unconditional>
    </hop>
  </hops>
  <notepads>
  </notepads>
</job>
相關文章
相關標籤/搜索