ETL之kettle使用总结:(批量、含常量)csv入库

本文实验的ktr文件:ktr文件


1.概述

18年开工第一天,做下Kettle的使用总结。
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。
关于kettle的下载及安装这里不赘述,此处仅介绍工作过程中最常见的三种使用场景:

  • 单个csv文件入库;
  • 增加一个常量字段的csv文件入库;
  • 批量csv文件入库。

2.具体操作

2.1单个csv文件入库

这个是最简单的操作,下面我们通过实例进行说明:

2.1.1首先我们在数据库中建立需要入库的表ljb_test_kettle

create table ljb_test_kettle
(
    session_id      varchar2(50),
    line_num        varchar(4),
    extension_id    varchar2(10),
    similar_grade   number
);

这里一定要注意字段的类型,多数情况下的报错都是由字段类型不匹配或长度不够等引起的。

2.1.2打开spoon

双击kettle解压文件中的spoon.bat(windows是spoon.bat,Linux和Mac是spoon.sh)。
在主对象树右击转换->新建,建立新的转换。并保存Ctrl+S,命名,这里随便写个。如下图:
ETL之kettle使用总结:(批量、含常量)csv入库_第1张图片
ETL之kettle使用总结:(批量、含常量)csv入库_第2张图片

2.1.3 创建数据库连接DB连接

右键图中DB连接-新建连接,填上相应的参数,除了数据表空间和索引表空间之外,其余均要填写。如下图:
ETL之kettle使用总结:(批量、含常量)csv入库_第3张图片
填写完成,我们可以点击测试,如果没问题则表示成功,如果错误请根据具体信息解决(网络问题、jar包缺少、配置错误等)。

2.1.4 创建输入输出对象

点击核心对象树,分别找到输入-CSV文件输入输出-表输出,并直接拖动到转换的图形视图(下图中的2视图)中。
ETL之kettle使用总结:(批量、含常量)csv入库_第4张图片

2.1.5创建连接

按住Shift键,依次单击输入对象和输出对象,会在两者之间生成一个箭头,并选择主输出步骤。如下:
ETL之kettle使用总结:(批量、含常量)csv入库_第5张图片

2.1.6 输入输出对象参数设置

通过双击两个对象,可以进行相关参数设置。

2.1.6.1 输入对象参数配置

步骤名称:可以使用默认,建议根据工作要求进行规范命名。
文件名:通过浏览选择对应需要导入的文件。
列分隔符:因为是CSV文件,所以采用默认的英文逗号。

对于字段这一列,我们可以自动获取字段,操作方式:
获取字段-取消,注意弹出框的时候一定选取消,不然相应的格式之类的会自动帮你填写,但这些往往我们并不需要。如下图:
ETL之kettle使用总结:(批量、含常量)csv入库_第6张图片
我们可以通过预览查看是否是我们想要的结果。
ETL之kettle使用总结:(批量、含常量)csv入库_第7张图片

2.1.6.2 输出对象参数配置

步骤名称:可以采用默认,推荐采用结果表名称。
数据库连接:采用之前创建的连接,如果没有创建,可在这里点击新建按钮进行创建。
目标表:数据库中的表名。
勾选指定数据库字段
ETL之kettle使用总结:(批量、含常量)csv入库_第8张图片

如果我们不勾选该选项的话,在我们选择数据库字段的时候,如下两个按钮就是灰色的,无法点击,如下图:
ETL之kettle使用总结:(批量、含常量)csv入库_第9张图片

点击获取字段。然后观察顺序是否无误,确定。

2.1.7 运行转换

点击三角符号,运行这个转换。
并查看日志。
ETL之kettle使用总结:(批量、含常量)csv入库_第10张图片

去数据库中查看数据,至此已完成。

2.2 增加新的常量字段的csv文件入库

我们有如下需求,三个csv文件入库,并添加一个flag字段,对于第一个csv文件,flag为0,第二个flag为1,第三个flag为2。

我们可以通过添加自定义常量的方式实现。
我们把刚才的对象复制一份,并点击连接箭头,可以看到,会变成灰色,这样,当我们运行的时候,灰色的转换就会被跳过。

2.2.1 增加常量

转换-增加常量
ETL之kettle使用总结:(批量、含常量)csv入库_第11张图片
建立如下图的转换。
ETL之kettle使用总结:(批量、含常量)csv入库_第12张图片

同样的我们建立测试表:

create table ljb_test_kettle_final
(
    session_id      varchar2(50),
    line_num        varchar(4),
    extension_id    varchar2(10),
    similar_grade   number,
    flag            number
);

2.2.2 配置常量

双加增加常量,并进行下图所示配置。
ETL之kettle使用总结:(批量、含常量)csv入库_第13张图片

2.2.3 配置输出对象

双击输出对象,更新配置,重新获取字段:
ETL之kettle使用总结:(批量、含常量)csv入库_第14张图片

2.2.1 运行转换

运行转换,第二个第三个同理,只需要更改对象的flag值即可。
ETL之kettle使用总结:(批量、含常量)csv入库_第15张图片

2.3 批量入库csv文件

有如下需求,我们需要把下图中的所有csv文件入库,这些csv文件字段类型完全一样。
ETL之kettle使用总结:(批量、含常量)csv入库_第16张图片

这时,我们需要采用通配符进行批量入库。

2.3.1 首先把之前的转换全部点击为灰色。

2.3.2 修改输入对象

批量输入与单个输入不同点在于输入对象变为了文本文件输入。

输入-文本文件输入
如下图:
ETL之kettle使用总结:(批量、含常量)csv入库_第17张图片

2.3.3 配置输入对象

2.3.3.1 配置文件项

浏览到目录,然后增加。
ETL之kettle使用总结:(批量、含常量)csv入库_第18张图片

填写通配符:采用如下写法可以成功。

.*\.csv$

如下图:
ETL之kettle使用总结:(批量、含常量)csv入库_第19张图片

2.3.3.2 配置内容项

分隔符,英文逗号。
格式:Unix。
ETL之kettle使用总结:(批量、含常量)csv入库_第20张图片

2.3.3.3 配置字段项

获取字段-取消
ETL之kettle使用总结:(批量、含常量)csv入库_第21张图片

2.3.3.4 预览记录

预览记录没问题则表示配置成功。

2.3.4 运行转换

运行该转换即可。

你可能感兴趣的:(数据库Mysql&Oracle)