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}
- 剩下的需要在具体的使用中来
探索
理解