Kettle输入步骤

来自小能手俱乐部
Yinyilong讨论 | 贡献2021年10月15日 (五) 03:13的版本 (创建页面,内容为“== 输入步骤概述 ==   输入步骤主要分为以下几类:     • 生成记录/自定义常量     • 获取系统信息    …”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

输入步骤概述

  输入步骤主要分为以下几类:

    • 生成记录/自定义常量

    • 获取系统信息

    • 表输入

    • 文本文件输入

    • XML 文件输入

    • Json输入

    • 其他输入步骤

生成记录和自定义常量

插图

生成记录

插图

由于生成记录每行都是一样的数据,所以便诞生了自定义常量数据来手工模拟数据

自定义常量数据

插图

常用于构造一些测试数据

获取系统信息

获得各类系统信息,常见的包括:

  • 转换开始时间。
  • 关键时间点信息
  • 最多十个命令行参数
  • 主机名/ip/进程号/虚拟机内存等
  • 上一个作业的完成情况参数

插图

// 固定是整个转换开始的时间

插图

表输入

  表输入是比较常见的输入方式,通过执行SELECT语句,从数据库拉取输入数据

  可以使用${}形式使用变量,如果使用?变量,要求前面步骤传过来的参数需要顺序一致

  示例表输入配置如下:(按住shift进行组件连接)

插图

插图

数据库连接时可能会出现驱动不存在,需要复制mysql-connector到lib目录下

(如果kettle重装等可能会出现配置读取冲突等问题,可以在C:/用户/xx/.kettle下)


推荐使用JDNI方式进行连接

插图

连接名称是为了在转换中好选择进行填写的,填什么都行,我是与JNDI名称相同。JNDI的配置文件在Kettle工具文件夹的根目录下里的simple-jndi里:

插图

为了方便,我加了不同的后缀以作区分,使用时再改名。真正生效的只有jdbc.properties,里面内容如下:

插图

看到这个突然想起来有件重要的事情没有说,相关的数据库连接驱动,要放在data-integration目录下的lib文件夹内,否则测试连接报错。

这三个配置分别对应了只读库,中间库,报表库,具体配置不做赘述。如此在数据库连接中,选择JNDI,填入正确的JNDI名称(如TBIN)即可使用。

这种方式的好处是在转换中需要填写的配置只有个名称而已,修改起来也只需要改变配置,切换环境十分方便。缺点如前所言,如果修改了配置文件,还需要重启spoon才能生效

JNDI方式有时候稍显不直观,可以通过统一数据源管理的方式:在主对象树DB连接下新建连接(新建转换后即可看到),然后右键->共享即可!

插图

配置变量输入:

插图

  数据类型对应关系:

插图

文本文件输入

插图

文本文件输入:

处理有列分隔符(限定符、逃逸字符)的文本文件。

功能选项丰富、有错误处理机制。

CSV 文件输入:

简化了文本文件输入

通过 NIO、并行、延迟转换提高性能 。--固定宽度:列固定宽度的文件,不用解析字符串,性能好。

文本文件输入

插图

  双击文件节点进入编辑,直接点击浏览进行选择不是很推荐,

  推荐使用变量(凡是旁边一个$形状的,都可以根据提示使用变量,内置变量参考这里),单击变量,旁边会显示变量的值,可以进行参考

  可以在第一行选择文件或者目录,选择目录则可以在规则表达式进一步通过正则进行控制

  然后点击增加,增加文件到选中的文件框中,之后点击显示文件名进行文件选择结果查看

  也可以点击下方从步骤选择文件

  继续设置输入的内容页:

插图

// 这里目前不知何解,设置制表符\t字段会识别失败。换成分号;等就正常了。解决方案如下:

使用sublime先安装hexVIew插件,使用插件,点击toggle查看制表符的十六进制,然后分隔符处通过$[],例如制表符查看是09;

  则分隔符为:$[09]

  字段页通过获取字段查看分割结果:预览记录查看记录结果

插图

  错误处理页可以进行相关设置:

插图

  过滤页可以进行字段过滤:

    例如选择第二列(从0开始位置),含有bb的

插图

  

固定宽度

要求每一行都是固定宽度,然后通过宽度截取


其它输入 

  Excel 输入

  Access 输入

  配置文件输入

  SAP 输入

  Oracle CDC 增量输入

  消息队列输入

  PDF文件输入

  搜索引擎结果输入