ETL工具
1.Kettle
1.多多使用获取字段按钮
2.表输入中的数字字段(如:COUNT(1))会自动转换为小数点后一位,可以在获取变量时转为Integer,或者to_char(count(1))
3.从表输入如果SQL中有变量,设置环境变量时需要手动获取变量
4.读取环境变量需要和设置环境变量在不同的转换中
5.JNDI配置在data-integration\simple-jndi\jdbc.properties中1.配置例子
zzb_oracle_username/type=javax.sql.DataSource
zzb_oracle_username/driver=oracle.jdbc.driver.OracleDriver
zzb_oracle_username/url=jdbc:oracle:thin:@ip:port:ORCL
zzb_oracle_username/user=username
zzb_oracle_username/password=password
6.调试转换时可以在执行时给变量赋值并调节日志级别
7.[添加文件到结果文件中]中需点击增加才能添加文件
8.linux上job中使用hadoop copy files下载文件到本地,通过shell执行下载不了,通过UI可以(有可能是个bug,坑了我好几天ToT)1.暂时可以变通使用
FTP下载
对象
9.javascript的date2str格式化时HH代表24小时制hh是12小时制
10.转换中的步骤是并行执行的(以为有箭头相连就有顺序了,细心还是好呀~)
11.etl调用存储过程
12.转换中的DB存储过程中指定的存储过程如果返回值是小数则类型需要指定为BigNumber,否则有可能会出现截位现象
13.实现循环执行
1.对于作业表输入会转换为列名,SQL脚本不可以,而转换无此限制
14.linux安装pentaho(被日立收购了)
15.关于执行SQL脚本组件
16.关于csv导入数据库
16.1.可以通过计算器计算生成新列
16.1.1.计算器可以通过增加一个Set field to constant value A来设置常数,而后参见运算
16.2.通过增加常量新增列,但值为常量
16.3.通过switch/case筛选数据
16.4.通过记录关联(笛卡尔输出)新增列,可以使用变量
17.调用存储过程,传入的参数名和顺序必须和procedure一致
18.Kettle教程
1.Kettle手册
19.Kettle下载链接
1.社区版
20.执行SQL语句
中【变量替换】替换的是SQL中的?,不支持${}
21.设置命名参数
22.作业的sql和转换的执行sql语句如想执行以下sql需要选择将SQL脚本作为一条语句发送
和Execute as a single statement
begin
for cur in (select 'drop table '||table_name txt
from user_tables)
loop
execute immediate cur.txt;
end loop;
end;
23.解决kettle去除空格类型设置不上
24.解决kettle抽取Excel字段添加.0
1.时间加.0可以通过设置时间格式去除