前置说明

  1. 遍历文件夹下的文件,读取所有的sheet页(指定的sheet)落库
  2. 读取execl文件和csv文件,获得文件中sheet/csv数据,进行落库,并增加字段实现更新;
  3. 如果execl中存在两个标题,将标题一进行行转列并进行字段的添加(任务图如下)



最终实现效果图:



组件的使用:

  1. execl输入
  2. csv输入
  3. 获取文件名
  4. 表输出
  5. 列拆分为多行
  6. 记录合并(笛卡尔积)
  7. 转换
  8. 执行SQL语句

说明:

任务1:使用滴滴.csv和携程(xc.xlsx)做演示

任务2:使用京东(jd1.xlsx)做演示

场景复现:

搭建任务1:使用滴滴.csv和携程(xc.xlsx)做演示

流程:

携程:

Execl文件输入:



文件输出,需要执行对应的路径,通过通配符进行匹配文件夹下的所有文件;.*\.xlsx



这里需要注意,对于工作表来说,可用于两个场景

  1. 读取指定的sheet数据
  2. 不指定sheet名字则读取该execl文件中所有的sheet数据,字段需要一致(适用于文件下的sheet页名字不同字段相同的表数据)





表输出:



直接以该组件图展示来说;

首先需要连接数据库(可参考网上文章),选择目标表,这里有两种方式:

  1. 如果数据库中存在表,则直接选择或填写名字
  2. 如果数据库没有,则开启指定数据库字段,并获取字段,执行下面的SQL,需要注意的是自动生成的语句是否正确。

最后执行可看到效果;

滴滴

获取文件名:





获取文件名匹配类似与execl输入组件,在预览数据的时候需要注意的filename参数,后续用到。

CSV文件输入:



首先通过单一的CSV文件输入,获得对应文件中的字段:



然后连接到获取文件名,通过filename参数,来接收前面的文件名;



最后表输出与携程例子中的操作相同,不表。

搭建任务2:使用京东(jd1.xlsx)做演示

流程图:

如果execl中存在两个标题,将标题一进行行转列并进行字段的添加。



在获取文件名中得到文件名参数(filename),需要传递到转换中:



Execl输入组件中的配置参数;



为了实现将第一个标题下的数据读取出来并进行行转列。我们在输入组件中的内容部分,设置为限制1:表示只读取标题字段下的第一行。(如下图)



根据列拆分多行进行转换:选择前面的字段,并设置向后传递的字段名字。



Execl2输入组件需要注意的点是sheet数据读取的起始位置:





最后对数据进行组合和落库:记录关联直接拖出来用就可。

字段更新

update xc set vpkid=CONCAT(DATE_FORMAT(SYSDATE(),'%Y%m%d'), 'xc'),update_time=SYSDATE(),create_time=SYSDATE();

最后对入库数据的各表字段进行更新:



Linux下运行

./pan.sh -file=xxx.ktr
./kitchen.sh -file=xxxx.kjb

kettle基于Java开发,可设置JVM内存大小:

起始内存大小:Xms

最大内存大小:Xmx

永久代大小:MaxpermSize

if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms7680m" "-Xmx7680m" "-XX:MaxPermSize=3840m"

Kettle需求场景复现的更多相关文章

  1. 如何基于EasyDSS体系的全套SDK完成各种场景下的视频应用需求

    需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...

  2. 如何基于EasyDSS流媒体RTMP、HLS(m3u8)、HTTP-FLV、RTSP服务器体系的全套SDK完成各种场景下的视频应用需求

    需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...

  3. TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析

    TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...

  4. ViewStub的简单解析和使用场景

    ViewStub是Android布局优化中一个很不错的标签/控件,直接继承自View.虽然Android开发人员基本上都听说过,但是真正用的可能不多. ViewStub可以理解成一个非常轻量级的Vie ...

  5. UX结合需求实例化进行设计开发

    技  术  文  件 技术文件名称:实例化+UX需求分析实践:场景监控需求实例化 技术文件编号: 版        本:V1.0 共 32 页 (包括封面) 拟  制    廖开蒙.刀锋团队 审  核 ...

  6. 开源ETL工具之Kettle介绍

    What 起源 Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,最新稳定版为7.1. 2005年12月,Kettle从2.1版本开始进入了开源 ...

  7. 做一个新产品需求,体验的分析文档?(例:喜马拉雅FM)

    2.1 战略层 2.11 产品定位: 一款产品覆盖面广,收听节目种类齐全,资源丰富的电台APP. 以PGC为主流,通过合作方式吸纳专业的电台人,节目人,行业名人分享内容. 融合UGC,满足人们在空闲时 ...

  8. 通过一个生活中的案例场景,揭开并发包底层AQS的神秘面纱

    本文导读 生活中案例场景介绍 联想到 AQS 到底是什么 AQS 的设计初衷 揭秘 AQS 底层实现 最后的总结 当你在学习某一个技能的时候,是否曾有过这样的感觉,就是同一个技能点学完了之后,过了一段 ...

  9. 记一次构建SaaS平台项目失败后的反思(收集的客户需求太少,且没有区分重点,闭门造车。技术演变要渐进)

    记一次构建SaaS平台项目失败后的反思 前言: 笔者从2017年起开始着手将公司现有的软件系统改造成多租户模式,以降低整个系统的运营成本.但最后这个项目以失败告终.今天,我将对这个SaaS项目是如何走 ...

随机推荐

  1. arts-week11

    Algorithm 69. Sqrt(x) - LeetCode Review Building a network attached storage device with a Raspberry ...

  2. unity---小地图制作

    脚本控制移动 public float moveSpeed =5f; public float roundSpeed=120f; void Update() { this.transform.Tran ...

  3. 12┃音视频直播系统之 WebRTC 实现1对1直播系统实战

    一.搭建 Web 服务器 前面我们已经实现过,但是没有详细说HTTPS服务 首先需要引入了 express 库,它的功能非常强大,用它来实现 Web 服务器非常方便 同时还需要引入 HTTPS 服务, ...

  4. JS倒计时(刷新页面不影响)的实现思路

    最近在做一个项目,用到了点击按钮实现倒计时,这个用js来实现很简单.但是遇到了一个问题 页面刷新后js重新加载导致 倒计时重新开始,或者直接初始化了 后来通过 cookie 保存来实现了js倒计时,关 ...

  5. Navicat可视化MySQL数据库

    Navicat可视化MySQL数据库 Navicat内部封装了所有的操作数据库的命令,用户只需要点击操作即可,无需书写sql语句. navicat能够充当多个数据库的客户端. 具体操作参考百度. py ...

  6. 抽象类与接口——JavaSE基础

    抽象类与接口 抽象类 抽象类既包含规范又包含具体实现 抽象类可以包含实现的方法 和 未实现的用abstract修饰的抽象方法 抽象类不可以有实例化(不能使用new实例化),只能通过子类继承,然后对子类 ...

  7. 腾讯云Redis全面升级,性能提升400%,可用性高达5个9

    2022年6月,腾讯云Redis全新升级,发布高性能版本,单节点可提供50W+吞吐,性能是原生Redis的4倍.同时,腾讯云Redis推出全球复制功能,解决原生Redis诸多痛点问题,可用性升级高达9 ...

  8. wsl2环境搭建

    序言 我电脑配置不高,开虚拟机跑linux总觉得太卡.最近才了解到windows早就上了wsl2--一款较为轻量的虚拟机软件.所以本篇博客偏笔记向,存粹记录以便多次使用. 环境 宿主机windows1 ...

  9. 10分钟快速部署camunda BPM开源版

    安装部署Camunda BPM有多种方式,基于Camunda独立web应用程序安装部署是最简单的一种方式,您只需要有tomcat即可. 本文档将指导您安装和配置Camunda独立web应用程序,快速体 ...

  10. python requires模块 https请求 由于TLS协议版本太高导致错误

    错误提示 requests.exceptions.SSLError: HTTPSConnectionPool(host='air.cnemc.cn', port=18007): Max retries ...