首页 > 数据库 >kettle案例一抽取gz格式文本内容保存到mongodb

kettle案例一抽取gz格式文本内容保存到mongodb

时间:2023-08-08 11:37:56浏览次数:41  
标签:输出 转换 文件 mongodb kettle gz 点击 输入


版本和启动

我们这里使用的7.1版本,官网下载的安装包为pdi-ce-7.1.0.0-12.zip。

安装目录下非常多的执行程序,但没有明显的启动图标。

kettle案例一抽取gz格式文本内容保存到mongodb_字段

Kettle常用三大家族:Spoon、Pan、Kitchen。
Spoon:通过图形界面方式设计、运行、调试Job与Transformation。
Pan: 通过脚本命令方式来运行Transformation。
Kitchen: 通过脚本命令方式来运行Job,一般就是通过调用Kitchen脚本来完成定时任务。

所以对应到 目录中的启动文件为:
Spoon.bat: 图形界面方式启动作业和转换设计器。
Pan.bat: 命令行方式执行转换。
Kitchen.bat: 命令行方式执行作业。

我们初级阶段可以使用 图形界面来进行操作,非常方便。

点击Spoon.bat等待启动后如图:

kettle案例一抽取gz格式文本内容保存到mongodb_数据仓库_02

Kettle中有两类设计分别是:Transformation(转换)与Job(作业),Transformation完成针对数据的基础转换,Job则完成整个工作流的控制。

Transformation(转换)定义对数据操作的容器,数据操作就是数据从输入到输出的一个过程,可以理解为比作业粒度更小一级的容器,我们将任务分解成作业,然后需要将作业分解成一个或多个转换,每个转换只完成一部分工作。

也就是说 转换可以是作业的组成部分,是作业的其中一个小步骤,作业负责把步骤连接起来。作业可以包含多个转换。

更多详细关于转换和作业可查看链接:
ETL工具Kettle简介和安装配置基本使用

我们要把gz的文本内容抽取出来输出到mongodb,这个可以算作一个转换。那么我们鼠标左键双击转换即可。界面会自动跳转到转换的核心对象栏。

kettle案例一抽取gz格式文本内容保存到mongodb_数据_03


我们这里主要会用到 输入 转换 输出 因为mongodb的操作是在Big Data里的,所以不用输出 而是使用Big Data。


拖动组件构造流程

我们这里主要会使用 输入(文本文件输入) 转换(拆分字段) 和 Big Data (MongoDB Output)。

分别在里面选取相应的组件拖入右边的界面中。如下:

kettle案例一抽取gz格式文本内容保存到mongodb_数据仓库_04


我们这里使用的是 文本文件输入—->拆分字段—>MongoDB Output,需要选中后点击第一个按钮,把步骤串联起来:

kettle案例一抽取gz格式文本内容保存到mongodb_字段_05


连接步骤的箭头需要正确,点击连线可以翻转方向。最终效果如图:

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_06


配置输入文件

鼠标左键双击文本文件输入,跳出配置框。

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_07


注意左上角的导航栏。


选择文件

点击浏览,选中gzip压缩文件,点击增加,看到文件已经进入到选中文件的列表中:

(看不到压缩文件时需要把类型改为所有文件)

kettle案例一抽取gz格式文本内容保存到mongodb_数据仓库_08


kettle案例一抽取gz格式文本内容保存到mongodb_文件名_09


这里的文件目录路径也可以使用正则表达式通配符模糊匹配。

辅助工具:
正则表达式测试网站

然后调试出通配符。

路径为:

F:chip

我这里文件名称如下:

ALL.chr1.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz

ALL.chr2.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz

ALL.chrMT.phase3_callmom-v0_4.20130502.genotypes.vcf.gz

ALL.chrY.phase3_integrated_v2a.20130502.genotypes.vcf.gz

调试出的通配符为:

.*genotypes.vcf.gz

kettle案例一抽取gz格式文本内容保存到mongodb_数据_10

则选中的文件如下:

kettle案例一抽取gz格式文本内容保存到mongodb_数据仓库_11

可以点击 显示文件名和显示来自第一行数据行的内容 确认下是否选中正确的文件。行数不宜太大,不然容易卡死。

显示文件内容 按钮慎点,文件太大会卡死。

文件名如下:

kettle案例一抽取gz格式文本内容保存到mongodb_数据_12

内容预览如下:

kettle案例一抽取gz格式文本内容保存到mongodb_数据_13


选择内容类型

点击左上角的导航栏 内容。

进入到内容配置环节。

文件类型不csv的话可以选择 Fixed 固定大小的文件。

分隔符使用制表符(点击Insert TAB)分割出每一行(根据自己的文件内容设置)

文本限定符:指定一个字符串左右的限定符号,有限定符的字符串里可以使用分隔符。有限定符的字符串内部如果要使用限定符,要将限定符加倍。比如”N1;N2”,如果输入限定符为”,则输出为N1;N2。

逃逸字符也叫转义字符,比如,输入逃逸字符后 输出里会去掉逃逸字符。比如文档内容为N1;N2

,逃逸字符为

则输出为N1;N2。

头部和尾部主要是表明头部和尾部的行数。因为获取字段时只会展示前50行的数据,所以 如果 头部内容超过了50行则看不到分割出的数据了。我们这里先填250行。

压缩选择 文件的压缩格式,我这里是gz,所以选择GZip。

其他的可以保持不变。

最终内容配置 最终设置如图:

kettle案例一抽取gz格式文本内容保存到mongodb_字段_14


选择字段

点击左上角的导航 字段

点击获取字段

这里发现字段只能根据长度去分列,这种方式我们不推荐,因为长度不一时有可能分割错误的数据出来。

所以我们先把一整行当作一列,作为输出,在字段选择环节再进行处理。

直接点击finish

kettle案例一抽取gz格式文本内容保存到mongodb_字段_15

设置如图:

kettle案例一抽取gz格式文本内容保存到mongodb_数据_16

预览记录如图:

kettle案例一抽取gz格式文本内容保存到mongodb_数据_17

我们后续会使用空格来进行列分割,所以这里不去除空格,虽然看起来是没有空格,但是 左键点击后发现空格还是保留了的。

kettle案例一抽取gz格式文本内容保存到mongodb_数据仓库_18


过滤

在内容预览的时候 我们发现文件内容中有些注释的行在头部以#号开头。

如果以头部行数来跳过是一种方案,但是我们是同时多个文件,它们的行数不一样。

所以就不能使用头部行数的方式了。

只能使用过滤的方式。

点击左上角导航栏的 过滤

过滤字符串 表示含有 该字符串的行会被过滤 我们这里输入#号。

过滤位置 表示过滤符号所在的位置。0表示第一个字符。 填写小于0则表示 会搜索整行。默认搜索整行。

停止在过滤器 是表示 匹配到一行则停止 过滤 否表示不停止 默认为否

积极匹配 是表示 匹配到的数据行将出现在 输出中, 否表示过滤掉这些数据,不出现在输出中,默认为否。

我们填下如下:

kettle案例一抽取gz格式文本内容保存到mongodb_字段_19

设置好过滤条件后 把头部改为0,免得数据被当作头部过滤掉。

到这里 我们的文本文件输入就做好了。


配置拆分字段

左键双击拆分字段后

在分隔符的地方输入想要使用的分隔符,我这里直接复制记录中的空白,发现是一个制表符。

选中字段,给出新的字段命名

kettle案例一抽取gz格式文本内容保存到mongodb_字段_20


kettle案例一抽取gz格式文本内容保存到mongodb_文件名_21

因为拆分字段没有自带预览记录,所以需要运行一下才能看到是否拆分得正确。

对着拆分字段右键,点击preview。

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_22


把行数改为3点击快速启动

会跳出预览数据窗口如下:

kettle案例一抽取gz格式文本内容保存到mongodb_数据_23


说明我们的分割是正确的。


配置MongoDB数据库输出

左键双击MongoDB Output

在configure connection中配置Host和Port

我这里配置的是 内网中的数据库和端口

kettle案例一抽取gz格式文本内容保存到mongodb_字段_24


在Output options中配置Database和Collection,如果每次都清空表的话 选择 Truncate collection。增量更新则不能选择 Truncate collection。

kettle案例一抽取gz格式文本内容保存到mongodb_数据_25


在Mongo document fields中点击Get fields,获取到字段。

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_26


启动转换和结果校验

点击界面上的播放按钮即可启动转换。

kettle案例一抽取gz格式文本内容保存到mongodb_数据_27


默认参数点击启动。

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_28


如果转换脚本没保存会弹出选择路径框我们先保存,输入任意脚本名称点击保存即可。

kettle案例一抽取gz格式文本内容保存到mongodb_数据_29

启动起来后可以在执行结果的地方看到执行情况

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_30

这时候去数据库中查看,已经自动新建了gene库和chip集合,里面不断新增的就是我们抽取的数据

kettle案例一抽取gz格式文本内容保存到mongodb_字段_31

抽取成功。


输出文件名和行数作为字段

如果需要输出文件名和行数作为字段,可以在内容栏里设置。

勾选在输出包括字段名 名称输入 fileName。

勾选输出包含行数 名称输入 lineNum。

勾选按文件取行号。

设置如图

kettle案例一抽取gz格式文本内容保存到mongodb_数据仓库_32


预览时发现已经有这两个字段了

kettle案例一抽取gz格式文本内容保存到mongodb_数据_33

这里的文件名是包含路径的,如果不想包含路径则去掉勾选在输出包括字段名,而是在其他输出字段里填写文件名字段名称即可。

如下图:

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_34

预览如图:

kettle案例一抽取gz格式文本内容保存到mongodb_文件名_35


标签:输出,转换,文件,mongodb,kettle,gz,点击,输入
From: https://blog.51cto.com/u_16218512/7006165

相关文章

  • kettle案例六数据表关联--排序记录-记录集连接-过滤记录
    如果我们清洗的数据是多个维度的,那么很有可能对数据进行关联得到一张最终表进行分析。比如回答集合的数据里有如下字段idoptionIduser包含了谁回答了哪个问题,选项是什么。选项集合的数据里有如下字段idquestionoption我们最终希望得到的数据集合是idquestionop......
  • kettle之添加geometry插件支持并使用
    参考:https://blog.csdn.net/aganliang/article/details/104949538为了能够处理geometry类型的数据,PDI需要安装pentaho-gis-plugins该插件下载地址:https://github.com/atolcd/pentaho-gis-plugins/releases根据自己的kettle版本,下载所需的插件即可,我的是9的,所以下载的是1.4 ......
  • c#操作mongodb防止重复插入
    原理:把可以唯一标识的字段提出来放在字符串列中,当字符串不包含要插入的数据时再进行数据操作MongoClientclient;MongoServerserver;MongoDatabasedatabase;client=newMongoClient("mongodb://192.168.0.4");serv......
  • 遇到的问题-----c#操作mongodb用foreach遍历集合报错curcor not found
    foreach(varttdocindatabase.GetCollection("集合名").FindAll()){}执行了一部分就报错curcornotfound了 原因是curcor有一定的时限如果数据太多的话可考虑分几部分来处理vardata=database.GetCollection("集合名");......
  • C#把mongodb导入sqlsever
    原理很简单 就是把mongodb中的数据提出来插入sqlsever中首先要在mongodb中添加mongodb字段和sqlsever字段对应的集合field。格式:{"sqlsever字段":"name","mongodb字段":"name"}MongoClientclient;MongoServerserver;MongoData......
  • MySQL8.0版本无法连接kettle
    问题在于jar驱动包1.遇到的问题问题显示:Driverclass'org.gjt.mm.mysql.Driver'couldnotbefound,makesurethe'MySQL'driver(jarfile)isinstalled.org.gjt.mm.mysql.Driver猜测是mysql的jar驱动包未安装,于是给kettle添加进了:mysql-connector-java-8.0.22.ja......
  • MySQL和MongoDB如何JOIN查询?一个直接在本地运行的SQL执行引擎
    在微服务和云原生愈发流行的今天,数据的分布也愈发脱离单库单机而更加复杂,使用的数据库类型也会更多,但业务的复杂依然会带来了大量的数据查询和导出需求,而很多时候我们很难为数据量的大部分系统创建完整的BI数仓系统,这时候你是不是觉得为这些需求查询和导出数据就会是一个十分困难且......
  • 【Linux】sz命令下载tar.gz,zip等文件到Windows解压时提示文件已损坏
    WinRAR打开提示:不可预料的压缩文件末端 用Bandzip打开提示:文件已损坏 用7Zip打开虽然不报错,但是发现文件缺失。开始以为是网络问题导致下载文件不全,但是对比文件大小发现一模一样。通过查看sz命令说明,解决办法为:下载的时候需要加上-be参数,明确指定下载的是二进制文件。......
  • MongoDB 3 主从复制配置
    #下载wgethttp://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.0.4.tgz#解压tarzxvfmongodb-linux-x86_64-rhel62-3.0.4.tgzmv/root/mongodb-linux-x86_64-rhel62-3.0.4/usr/local/mongodb#创建目录和日志文件mkdir/usr/local/mongodb/datatouch/usr/loc......
  • MongoDB安装部署、集群和分片
    MongoDB安装部署、集群和分片目录一、    Mongo安装、启动和关闭1. MongoDB安装下载MongoDB压缩包 解压tar–zxvfmongodb-linux-x86_64-rhel62-3.2.4.tgz将解压包拷贝到指定目录Mvmongodb-linux-x86_64-rhel62-3.2.4 /usr/local/mongodb在~/.bashrc添加exportPATH=/u......