前置说明

  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. 跨域问题及其解决方法(JSONP&CORS)

    一.什么是跨域 当a.qq.com域名下的页⾯或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为.跨域的定义从受限范围可以分为两种,⼴义跨域和狭义跨域. (一)广义跨域 ⼴义跨域通常包 ...

  2. 【单片机】CH32V103C8T6定时器3程序实验

    代码功能:每隔1毫秒进入一次定时器中断. 每隔1秒串口打印一次数据. time.c #include "time.h" #include "ch32v10x.h" ...

  3. Linux免密登陆配置(互信配置)

    Linux免密登陆配置(互信配置) 1.生成当前用户的秘钥文件 [oracle@localhost .ssh]$ ssh-keygen -t rsa 2.配置远程登录用户的公钥文件 将公钥文件拷贝至另 ...

  4. D3.JS结合Canvas实现直方图,散点图,等高线图,密度图

    接触到D3.JS,感觉在图表方面实现的很好,于是深入了解了一下,想在项目中使用, 可是当看到DEMO时才发现,基本上所有的DEMO都是基于SVG,虽然D3.JS声称支持CANVAS,可并没有发现一例使 ...

  5. rpm构建流程学习总结

    rpm构建流程 学习链接: b站马哥: https://www.bilibili.com/video/BV1ai4y1N7gp RedHat: https://access.redhat.com/do ...

  6. React与Koa一起打造一个仿稀土掘金全栈个人博客(技术篇)

    本篇文章将分为前台角度与后台角度来分析我是怎么开发的.前台角度主要资源 react.js ant Design for-editor axios craco-less immutable react- ...

  7. CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021

    论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现细微的特征变化.除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看 来源 ...

  8. SAP 实例 12 List Box with Value List from PBO Module

    REPORT demo_dynpro_dropdown_listbox. DATA: name TYPE vrm_id, list TYPE vrm_values, value LIKE LINE O ...

  9. 【python基础】第03回 软件安装

    上节内容回顾 1.计算机五大组成部分详解 1.控制器 控制计算机各个硬件的工作 2.运算器 数学运算.逻辑运算(核心) """CPU = 控制器 + 运算器"& ...

  10. 【python基础】第05回 数据类型,交互,格式化输出,运算符

    上节内容回顾 1.python的注释 # 单行注释 pycharm快捷键:ctrl+? '''多行注释''' """多行注释""" 2.py ...