kettle入门(五) 之kettle读取gz格式文本详细案例

背景:

ods平台的一个很简单的数据共享需求:

运营商的某个部门每天定时送gz格式的HLR文本数据到FTP服务器的固定目录下。然后ods每天定时去取然后录入到RDBMS的表中,开放给其他系统查询调用,这种称作数据库表接口。

需求很简单,但是因为以前只用过文本输入做txt 或者csv、excel ,所以一时就想怎么先把gz格式解压出来,再用文本文件输入,首先想到了用 kettle3自带的unzip 功能

如下图:

结果发现 解压不了gz格式的,后来又想到使用shell命令,但是在后台putty可以 但是用当前系统etl平台封装执行shell命令后就有问题。搞了较长时间问题没搞定。

后来偶然发现 文本文件输入 本身就可以直接读gz格式文本,感觉前面都浪费了时间

解决:

下图所示的kjb 就是实现该功能的job ,步骤如下:

1 START

2 删除本地服务器的历史文件 (Delete files)防止历史文件占用机器存储

3 设置时间变量(cs_filename)

4 使用时间变量正则匹配下载FTP文本到本地(带有地球的那个图)

5 从本地匹配需要的文本录入RDBMS(alhlrfile)

下图实现的功能是   从本地匹配需要的文本录入RDBMS ,画红圈的目录部分指当前脚本文件ktr所在的目录下的IE目录,通配符用来指定读取匹配的文本。

ex:每天读取前一天的文本 则 时间变量设置为 系统时间的前一天 2015-05-16 就是2015-05-15 ,文本就是2015-05-15.txt.gz

关于时间变量的设置 参考:

kettle入门(四)
之kettle中设置任意时间变量的详细案例

下图文本文件输入 就是 直接把gz格式的文本录到RDBMS的图元。

如下图:

文件类型:选择上csv即可(与上有系统 协商是文本)

分隔符、封闭字符:按照实际的文本内容来

头部数量:指文本头部 非正式数据的内容(如 字段属性名等)的行数

compression: 默认none 应选择GZIP ,若有中文 格式选择UNIX ,编码方式选择 UTF-8,若没有则默认

选好之后 ,可以点击预览记录 看看设置是否正确,数据是否正常。

下图是文本数据全量录入到oracle数据库的示例:

时间: 2024-12-26 21:53:03

kettle入门(五) 之kettle读取gz格式文本详细案例的相关文章

kettle入门(四) 之kettle中取任意时间变量的使用详细案例

引: 在数据仓库项目中 有一类和生产或者外围系统交互的接口称为FTP文件接口, 用kettle开发.实现这种接口 配置脚本时,经常需要用时间变量来取或者上传FTP里面 固定格式文件名的文本,例如 生产系统定时 每天推送前天的数据文本 到某个FTP服务器 2014-04-28 推送文件名 2015-04-26.txt.gz 2014-04-27 推送文件名 2015-04-25.txt.gz 实现: kettle 版本3.0.4,如下图所示: 所需要三个功能组件 1 获取系统信息 2 java s

kettle入门(七) 之kettle增量方案(一)全量比对取增量-依据唯一标示

引: ods有个project表来自于上游系统,数据量不大 十几万,下游系统须要此数据,而且须要每天提供截止当天的增量数据 要求每条数据给出数据变化时间及标示,即数据若是插入 有插入时间和插入标示 若是改动 有改动时间和改动标示 若是删除需逻辑删除.有删除标示且有删除时间 解决: kettle的转换ktr里有一个图元叫做合并记录.能够把两个表输入分为源和目的依据唯一标示 进行全量比对.由此.我们得到增量的数据流,再写入到RDBMS里,即能够实现该需求.实现功能的ktr例如以下图: 1 输入源 合

kettle入门(六) 之kettle抽取变量表名表

背景: ods平台的一个很简单的数据抽取需求: 上游系统有一个月表,每个月出上个月数据并放在新建的月表里.例如:20150401出3月份表和数据 TB_B_FT_BROADBAND_201503, 20150501出4月份表和数据 TB_B_FT_BROADBAND_201504.而ods需要每月初等他们数据出来后再抽取过来. 需求很简单,用kettle最常见的表输入和输出抽取即可,但是表输入的select 语句里面的表名需要使用变量. 解决: 使用job kjb如下 完成此需求,如下图,步骤如

kettle入门(三) 之kettle连接hadoop&hdfs图文详解(转)

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到页面最下面的底端,如下图: ar

kettle入门(三) 之kettle连接hadoop&hdfs图文详解

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把原始文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到打开页面最下面的底端如下图: arc

kettle入门(七) 之kettle增量方案(一)全量比对取增量-根据唯一标示

引: ods有个工程表来自于上游系统,数据量不大 十几万,下游系统需要此数据,并且需要每天提供截止当天的增量数据 要求每条数据给出数据变化时间及标示,即数据若是插入 有插入时间和插入标示 若是修改 有修改时间和修改标示 若是删除需逻辑删除.有删除标示且有删除时间 解决: kettle的转换ktr里有一个图元叫做合并记录,可以把两个表输入分为源和目的根据唯一标示 进行全量比对.由此,我们得到增量的数据流,再写入到RDBMS里,即可以实现该需求.实现功能的ktr如下图: 1 输入源 合并记录 上图,

python 读取不同格式文本

常见文本编码格式:UTF-8.UTF-16.UTF-32.ANSCII BOM 是 Byte Order Mark 的简称,即字节序标记.用于标记文本流: 表示文本流的字节顺序,是小端序(little-endian)还是大端序(big-endian); 表示文本流是 Unicode 字符: 表示文本流的编码方式. 几种编码方式的 BOM 值: UTF-8:0xEFBBBF UTF-16(BE):0xFEFF UTF-16(LE):0xFFFE UTF-32(BE):0x0000FEFF UTF-

Kettle 入门笔记1

一,KETTLE介绍 Kettle是 (Extract, Transform and Load抽取.转换.加载)一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定.其中,Spoon是Kettle中的一个组件,其他组件有PAN,CHEF,Encr和KITCHEN等. Spoon通过图形化的页面,方便直观的让你完成数据转换的操作. 二.Kettle下载 可到开源官网(https://community.hds.com)下载: Data Inte

微信小程序入门五: wxml文件引用、模版、生命周期

实例内容 wxml文件引用(include.import) 模版 小程序生命周期 实例一: include方式引用header.wxml文件 文件引用对于代码的重用非常重要,例如在web开发中我们可以将公用的header部分和footer等部分进行提取,然后在需要的地方进行引用. 微信小程序里面,是包含引用功能的--include.import.这两个引用文件的标签,使用基本差不多,这里先说一下include. 微信中的视图文件引用,引用过来的都是没有渲染的,基本类似于直接将引用过来的文件复制到