zoukankan      html  css  js  c++  java
  • kettle学习笔记(四)——kettle输入步骤

    一、输入步骤概述

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

        • 生成记录/自定义常量
        • 获取系统信息
        • 表输入
        • 文本文件输入
        • XML 文件输入
        • Json输入
        • 其他输入步骤

    二、生成记录和自定义常量

      

      1.生成记录

        

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

      2.自定义常量数据

      

      常用于构造一些测试数据

    三、获取系统信息

      获得各类系统信息,常见的包括:
        • 转换开始时间。
        • 关键时间点信息
        • 最多十个命令行参数
        • 主机名/ip/进程号/虚拟机内存等
        • 上一个作业的完成情况参数

        

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

      

      更多系统信息细节,参考相关文档

    四、表输入

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

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

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

      

      

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

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

     推荐使用JDNI方式进行连接:https://www.cnblogs.com/mq0036/p/9238646.html

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

      

       配置变量输入:

      

       数据类型对应关系:

        

    五、文本文件输入

      

      文本文件输入:
        处理有列分隔符(限定符、逃逸字符)的文本文件。
        功能选项丰富、有错误处理机制。
      CSV 文件输入:
        简化了文本文件输入
        通过 NIO、并行、延迟转换提高性能
       固定宽度:
        列固定宽度的文件,不用解析字符串,性能好。

       1.文本文件输入

         先看文件这一项:

        

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

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

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

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

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

      继续设置输入的内容页:

      

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

      解决方案如下:

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

      则分隔符为:$[09]

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

      

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

      

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

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

      

      2.固定宽度

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

    ###  XML输入暂不赘述

    ###  JSON输入暂不赘述

    六、其它输入 

      Excel 输入
      Access 输入
      配置文件输入
      SAP 输入
      Oracle CDC 增量输入
      消息队列输入
      PDF文件输入
      搜索引擎结果输入

  • 相关阅读:
    宏定义问题
    (转载)(int)a、&a、(int)&a、(int&)a的区别,很偏僻的题
    boolalpha的作用
    一些小细节
    HTTP Keep-Alive的作用
    数据库三大范式
    laravel 安装语言包
    MySQL存储引擎中的MyISAM和InnoDB区别详解
    推荐一款超好用的工具cmder
    如何保证代码质量
  • 原文地址:https://www.cnblogs.com/zouhong/p/13254013.html
Copyright © 2011-2022 走看看