Kettle需求场景复现
前置说明
- 遍历文件夹下的文件,读取所有的sheet页(指定的sheet)落库
- 读取execl文件和csv文件,获得文件中sheet/csv数据,进行落库,并增加字段实现更新;
- 如果execl中存在两个标题,将标题一进行
行转列
并进行字段的添加(任务图如下)
最终实现效果图:
组件的使用:
- execl输入
- csv输入
- 获取文件名
- 表输出
- 列拆分为多行
- 记录合并(笛卡尔积)
- 转换
- 执行SQL语句
说明:
任务1:使用滴滴.csv和携程(xc.xlsx)做演示
任务2:使用京东(jd1.xlsx)做演示
场景复现:
搭建任务1:使用滴滴.csv和携程(xc.xlsx)做演示
流程:
携程:
Execl文件输入:
文件输出,需要执行对应的路径,通过通配符进行匹配文件夹下的所有文件;.*\.xlsx
这里需要注意,对于工作表来说,可用于两个场景:
- 读取指定的sheet数据
- 不指定sheet名字则读取该execl文件中所有的sheet数据,字段需要一致(适用于文件下的sheet页名字不同字段相同的表数据)
表输出:
直接以该组件图展示来说;
首先需要连接数据库(可参考网上文章),选择目标表,这里有两种方式:
- 如果数据库中存在表,则直接选择或填写名字
- 如果数据库没有,则开启指定数据库字段,并获取字段,执行下面的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需求场景复现的更多相关文章
- 如何基于EasyDSS体系的全套SDK完成各种场景下的视频应用需求
需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...
- 如何基于EasyDSS流媒体RTMP、HLS(m3u8)、HTTP-FLV、RTSP服务器体系的全套SDK完成各种场景下的视频应用需求
需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析
TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...
- ViewStub的简单解析和使用场景
ViewStub是Android布局优化中一个很不错的标签/控件,直接继承自View.虽然Android开发人员基本上都听说过,但是真正用的可能不多. ViewStub可以理解成一个非常轻量级的Vie ...
- UX结合需求实例化进行设计开发
技 术 文 件 技术文件名称:实例化+UX需求分析实践:场景监控需求实例化 技术文件编号: 版 本:V1.0 共 32 页 (包括封面) 拟 制 廖开蒙.刀锋团队 审 核 ...
- 开源ETL工具之Kettle介绍
What 起源 Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,最新稳定版为7.1. 2005年12月,Kettle从2.1版本开始进入了开源 ...
- 做一个新产品需求,体验的分析文档?(例:喜马拉雅FM)
2.1 战略层 2.11 产品定位: 一款产品覆盖面广,收听节目种类齐全,资源丰富的电台APP. 以PGC为主流,通过合作方式吸纳专业的电台人,节目人,行业名人分享内容. 融合UGC,满足人们在空闲时 ...
- 通过一个生活中的案例场景,揭开并发包底层AQS的神秘面纱
本文导读 生活中案例场景介绍 联想到 AQS 到底是什么 AQS 的设计初衷 揭秘 AQS 底层实现 最后的总结 当你在学习某一个技能的时候,是否曾有过这样的感觉,就是同一个技能点学完了之后,过了一段 ...
- 记一次构建SaaS平台项目失败后的反思(收集的客户需求太少,且没有区分重点,闭门造车。技术演变要渐进)
记一次构建SaaS平台项目失败后的反思 前言: 笔者从2017年起开始着手将公司现有的软件系统改造成多租户模式,以降低整个系统的运营成本.但最后这个项目以失败告终.今天,我将对这个SaaS项目是如何走 ...
随机推荐
- arts-week11
Algorithm 69. Sqrt(x) - LeetCode Review Building a network attached storage device with a Raspberry ...
- unity---小地图制作
脚本控制移动 public float moveSpeed =5f; public float roundSpeed=120f; void Update() { this.transform.Tran ...
- 12┃音视频直播系统之 WebRTC 实现1对1直播系统实战
一.搭建 Web 服务器 前面我们已经实现过,但是没有详细说HTTPS服务 首先需要引入了 express 库,它的功能非常强大,用它来实现 Web 服务器非常方便 同时还需要引入 HTTPS 服务, ...
- JS倒计时(刷新页面不影响)的实现思路
最近在做一个项目,用到了点击按钮实现倒计时,这个用js来实现很简单.但是遇到了一个问题 页面刷新后js重新加载导致 倒计时重新开始,或者直接初始化了 后来通过 cookie 保存来实现了js倒计时,关 ...
- Navicat可视化MySQL数据库
Navicat可视化MySQL数据库 Navicat内部封装了所有的操作数据库的命令,用户只需要点击操作即可,无需书写sql语句. navicat能够充当多个数据库的客户端. 具体操作参考百度. py ...
- 抽象类与接口——JavaSE基础
抽象类与接口 抽象类 抽象类既包含规范又包含具体实现 抽象类可以包含实现的方法 和 未实现的用abstract修饰的抽象方法 抽象类不可以有实例化(不能使用new实例化),只能通过子类继承,然后对子类 ...
- 腾讯云Redis全面升级,性能提升400%,可用性高达5个9
2022年6月,腾讯云Redis全新升级,发布高性能版本,单节点可提供50W+吞吐,性能是原生Redis的4倍.同时,腾讯云Redis推出全球复制功能,解决原生Redis诸多痛点问题,可用性升级高达9 ...
- wsl2环境搭建
序言 我电脑配置不高,开虚拟机跑linux总觉得太卡.最近才了解到windows早就上了wsl2--一款较为轻量的虚拟机软件.所以本篇博客偏笔记向,存粹记录以便多次使用. 环境 宿主机windows1 ...
- 10分钟快速部署camunda BPM开源版
安装部署Camunda BPM有多种方式,基于Camunda独立web应用程序安装部署是最简单的一种方式,您只需要有tomcat即可. 本文档将指导您安装和配置Camunda独立web应用程序,快速体 ...
- python requires模块 https请求 由于TLS协议版本太高导致错误
错误提示 requests.exceptions.SSLError: HTTPSConnectionPool(host='air.cnemc.cn', port=18007): Max retries ...