kettle笔记(一)

kettle笔记(一)

-------------------------------------------

前面要说的

使用kettle也有一段时间了,kettle的使用解决了生产环境上的很多问题.以前在开发的过程中不懂得总结梳理自己的知识点,吃过很多亏,所以自己会在工作学习中好好梳理自己的知识点,希望也能帮到需要的人.

kettle是做什么的

kettle是一款开源的数据集成工具,就是我们常说的ETL -- 抽取(extract)、转置(transform)、加载(load). 在具体的生产过程中,数据量的增加,复杂性的增加,数据表之间的逻辑关联变得复杂.使用传统的sql进行数据查询时,不可避免的会造成慢sql的产生.使得数据库查询压力上升从而影响正常的生产活动.此处不在赘述...

安装kettle

配置数据库连接

  • 新建一个转换或者作业
  • 在主对象树下右键点击DB连接选择新建
  • 新建数据库连接选择自己的数据类型填入必要参数
    • mysql为例
    • 左侧目录选择选项,填入下列jdbc参数,优化性能
      characterEncoding=utf8
      characterEncoding=true
      useCompression=true
      useSSL=false
      useServerPrepStmts=false
      
    • 连接池根据自己的需求设置
  • 测试保存后,点击刚才新建的数据库连接,选择共享,此时~/.kettle目录下会生生成相应的文件
  • 共享后的数据库连接可以作为所有转换作业公用的数据库连接,无需每次重复配置

配置文件

安装环境 deepin V20

#进入.kettle目录下
cd ~/.kettle
ls -l
-rw-r--r-- 1 xx xx  1489 2月   1 17:54 db.cache-9.1.0.0-324
-rw-r--r-- 1 xx xx  1688 1月  18 11:39 kettle.properties
-rw-r--r-- 1 xx xx  1344 1月  18 11:37 kettle.properties.bak1
-rw-r--r-- 1 xx xx 14588 2月   1 17:54 shared.xml
-rw-r--r-- 1 xx xx 14588 2月   1 17:54 shared.xml.backup

kettle.properties文件

这个配置文件中可保存转换或者作业中需要的常量参数,也可以用于保存数据库的连接参数,数据库名,用户名密码等...
  • eg:
# This file was generated by Pentaho Data Integration version 9.1.0.0-324.
# 
# Here are a few examples of variables to set: 
#
# PRODUCTION_SERVER = hercules
# TEST_SERVER = zeus
# DEVELOPMENT_SERVER = thor
#
# Note: lines like these with a # in front of it are comments
#

#db
db_host=127.0.0.1
db_db=test
db_port=3306
db_uname=root
#此处来源于shared.xml标签<password></password>,本文中已被替换
db_pwd=Encrypted xxxx

#val 参数
value=2021

  • 引用
    在数据库配置中各项可直接使用例如${db_host}进行配置参数的引入
    

shared.xml 文件

文件中保存了你共享的数据库配置文件如下,注意引入kettle.properties中参数的方式
  <connection>
    <name>test</name>
    <server>${db_host}</server>
    <type>MYSQL</type>
    <access>Native</access>
    <database>${db_db}</database>
    <port>${db_port}</port>
    <username>${db_name}</username>
    <password>${db_pwd}</password>
    <servername/>
    <data_tablespace/>
    <index_tablespace/>
    <attributes>
      <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
      <attribute><code>EXTRA_OPTION_MYSQL.rewriteBatchedStatements</code><attribute>true</attribute></attribute>
      <attribute><code>EXTRA_OPTION_MYSQL.useCompression</code><attribute>true</attribute></attribute>
      <attribute><code>EXTRA_OPTION_MYSQL.useSSL</code><attribute>false</attribute></attribute>
      <attribute><code>EXTRA_OPTION_MYSQL.useServerPrepStmts</code><attribute>false</attribute></attribute>
      <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
      <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
      <attribute><code>INITIAL_POOL_SIZE</code><attribute>1</attribute></attribute>
      <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
      <attribute><code>MAXIMUM_POOL_SIZE</code><attribute>10</attribute></attribute>
      <attribute><code>POOLING_initialSize</code><attribute>5</attribute></attribute>
      <attribute><code>POOLING_maxActive</code><attribute>32</attribute></attribute>
      <attribute><code>POOLING_maxWait</code><attribute>60000</attribute></attribute>
      <attribute><code>POOLING_minIdle</code><attribute>5</attribute></attribute>
      <attribute><code>POOLING_poolPreparedStatements</code><attribute>true</attribute></attribute>
      <attribute><code>POOLING_testOnBorrow</code><attribute>false</attribute></attribute>
      <attribute><code>POOLING_testOnReturn</code><attribute>false</attribute></attribute>
      <attribute><code>POOLING_testWhileIdle</code><attribute>true</attribute></attribute>
      <attribute><code>POOLING_timeBetweenEvictionRunsMillis</code><attribute>60000</attribute></attribute>
      <attribute><code>POOLING_validationQuery</code><attribute>SELECT 1 FROM DUAL</attribute></attribute>
      <attribute><code>PORT_NUMBER</code><attribute>${db_port}</attribute></attribute>
      <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>Y</attribute></attribute>
      <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
      <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
      <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
      <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
      <attribute><code>USE_POOLING</code><attribute>Y</attribute></attribute>
    </attributes>
  </connection>


</sharedobjects>

配置文件保存后需要重启kettle

引入参数变量

  • 第一种:${val}
  • 第二种:%%val%%
  • 哪些地方可以引入参数变量:右边存在角标[<s\>],并且ctrl+alt+space可以选择你需要的参数变量
  • 在表输入组件中sql中可以使用${}来使用变量,入select * from table where title = ${value}
  • 剩下的需要在具体的使用中来探索理解

有什么建议欢迎留言,感谢,后续的笔记会比较零散见谅.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值