• Kettle 事务、转换内顺序、excel模版、使用踩坑


    kettle中转换和作业的执行顺序:

        1、一个作业内的转换,是顺序执行的。
        2、一个转换内的步骤是并行执行的。
        3、作业内不支持事务,转换内支持事务。
    根据业务需要,通常需要在转换内顺序执行,小技巧如下:
        1、执行SQL是优先于所有步骤。
        2、使用“阻塞数据直到步骤都完成”,确保其他数据步骤都完成再进行下一步骤。
    事务:
        1、设置转换只使用一个事务。转换设置-->夹项-->使用唯一连接。
        2、设置转换内的表插入等数据库的操作不进行批量提交。"提交记录数量"-->0
     
     
     
     
    excel  输出使用模版踩坑
    首先 kettle 有两个excel控件,“Excel输出 ”    和  "Microsoft Excel 输出"
    Excel输出 这个控件比较 简单,支持的功能也少,注意,使用模版时,貌似不支持 xlsx ,否则会报错,xls的模版必须是创建时就是xls格式的,不能是 xlsx 后缀修改的
    配置如下:
      
     
     
    1、不输出头 使用模版中的
    2、编码 自行选择,
    3、工作表名称,必须和模版中一样,
    4、追加excel 模版,
    5、模版中有ABCD 4个标签页,如果第一个输出的是C的内容,会直接输出到A上,
    "Microsoft Excel 输出"  配置如下,
     
     
    1、如果文件已存在,这个选项要好好理解,如果多个转换输出到一个excel的多个sheet页签中,选"使用现有文件输出",
    2、工作表名要和模版中 你要输出的 sheet的页签的名字保持一致
    3、如果输出文件中已存在工作表,因为要使用模版,所以肯定要选择"输出至已存在的工作表中"
    4、使用模版创建新文件
    5、模版文件路径
    6、开始输出自单元格   即模版表头下一行最左测的单元格的位置
    7、输出表头,因为使用模版所以 这个不能勾选
    8、其他自行摸索
     
     
     邮件发送多个附件:
    1、一共五个附件,三个收件人,其中一个收三个附件,附件是之前的转换生成的,名称加日期,每天一份,比如fuJian-2019-11-19.xls,fuJian-2019-11-18.xls,当天邮件只能发当天的附件,
    2、kettle的邮件空间里,选附件是可以选目录的,同时可以加通配符,问题在于 通配符 添加系统变量没有测试成功,日期是变量,输出excel 的目录有其他地区,其他日期的文件,所以发送三个附件那个邮件,要过滤地区及该地区的不同日期,
    3、通配符 添加系统变量没有测试成功,只能想其他解决方案,
      3.1、在输出目录新建子目录,A
      3.2、三个附件一起发的,三个附件都输出到A目录,
      3.3、job里有删除多个文件的控件,每次job执行时,首先删掉A目录下的所有文件,然后该job的后续 转换会生成当天最新的附件excle文件,发送邮件时,发送A目录下所有的文件
      3.4、避免过期的excle大量堆积
     
     
    有个报错,记录下:
    .../kettle/data-integration/spoon.sh:行226: /opt/java/jdk1.8.0_171/bin//opt/java/jdk1.8.0_171/bin/java: 没有那个文件或目录
     这个就是jdk安装目录的问题,本来好好的,不知道为啥叉劈了
     
    关于表输入:
    使用如下图:
     
    这两天搞数据盘点,又要用到这个表输入时,有点问题,
    步骤:首先读取excel 然后用javascript做个变量转换,然后用表输入查询数据,最后把查询到的数据输出到excel,最终输出excel里内容也包含部分最初的那个excel里的内容
    问题出在javascript和表输入中间,如果表输入里的 “从步骤插入数据” 不选,结果就啥也查不到,如果选了就报错:无效的索引列
    表输入里的sql需要用到javascript里定义的一个变量
     
     
     
    #淡定戒骄戒躁淡定#
  • 相关阅读:
    JAVA 正则表达式 (超详细)
    Windows命令-route
    Spring3 MVC请求参数获取的几种方法[转]
    Linux-支持中文
    Linux-Tmux使用初体验
    Linux命令-工作管理命令:&,ctrl+z,jobs,fg,bg
    Linux命令-服务管理命令:chkconfig
    Linux命令-文件系统常用命令:df,du,fsck,dumpe2fs
    Linux命令-用户管理:useradd,userdel,usermod,id,su,env,exit
    Linux命令-某个用户组下面的所有用户
  • 原文地址:https://www.cnblogs.com/feiye512/p/11168405.html
Copyright © 2020-2023  润新知