Kettle 2-3 第二课

双击 CSV文件输入:

封闭符: 

以CSV为例,每一列按逗号分割,但是如果列内容里, 也存在逗号,就麻烦了。双引号,就代表一个整体,不要解析里面的逗号,把字段一分为二。

以前举例过,在olist文件里,用户的评论是会有回车的。

NIO缓存大小,不用管;

其它设置不用管; 

接下来,可以获取字段,预览看看,最后确定。

双击输出:

 上面的对话框,可以把扩展名删除。

格式都不用管;

字段,有不想要的,可以筛选。

在文件里包含日期,很多时候是必要的,一目了然;

在文件里包含时间;

内容,追加,这时候应注意把“在文件里包含日期,在文件里包含时间”去掉,否则会追加不成功;

接下来,启动。

------------------------------------------------------------

 输入,把student_info导入进来;

 

 工作表,获取工作表名称;

内容,错误处理都不用管。

字段中,发现有很多数据,这是两个sheet都合在了一起,这里我们删除后面的5行:

 文本文件输出,最后启动:

 发现id是带小数点的,可以回去进行调整。

 如下格式就改过来了:

 -------------------------------------

接下来,要把5个文件合并导入,然后输出成一个文件。有多种方法。

删除不必要的字段,预览如下:

 这种方法有一定的局限性,因为如果输入文件很多,一个一个输入很麻烦,下面是另外一种方法。

-------------------------------------------

 多输入:

输入多个文件,可以用正则表达式,这里输入.*,代表所有文件。

点,代表除换行符以外的任何单字符;

星,代表匹配前面的子表达式一次或多次;

但是在这里,正则表达式我们输入:student_info.*;

 

 同样删除不必要的字段;

输出不再赘述。

-----------------------------------------

这里再介绍一种方法, 把phone_model和input1.xls合并输入然后输出,一顿操作之后发现运行错误,如下:

 这里需要对字段中的类型做定义;另外我们发现这里输入的两个表,csv里多了一个rom, 匹配不上,我们删除它试试看,如下,我们发现错误少了很多:

这里索性把excel删除掉,excel兼容性通常比较差,这里换成另外的文件输入。

---------------------------------------------------------

输出到mysql, 

csv输入不再赘述,输出设置如下:

然后我们进入到mysql中,看看output_table是否存在。表是存在的,但却是空的。

 

其实是生成了一个output的文件,我们找到文件夹所在的位置运行cmd, 输入如下:

D:\Program Files\kettle\kettle_exam\Kettle_course_data\kettle_output_excerse>mysql -u root -p -D student <output_table_20210915_233746.sql

提示,表phone_demo_plus已经存在了。

我们运行: mysql -u root -p

进去删除这个表:

 删除表: drop table phone_demo_plus;

然后退出;

再次运行:D:\Program Files\kettle\kettle_exam\Kettle_course_data\kettle_output_excerse>mysql -u root -p -D student <output_table_20210915_233746.sql

提示成功了;

然后再次一顿操作:

mysql -u root -p;

mysql> show databases;

mysql> use student;

mysql> show tables;

 mysql> select * from phone_demo_plus limit 10; 得到如下:

 那么这里有个问题,表输出和MYSQL输出,应该用哪一个呢?他们的应用场景是什么样?MYSQL更加使用于,我需要把mysql文件发给别人,同时又不能访问别人的数据库。


数据的处理和计算

建立一个excel输入,如下:

 

接下来,如果我们要提取excel输入表中的日期的年,我们在输入和输出之间加一个计算器,在计算器中输入如下:

 接下来设置表输出:

 然后,目标模式选择student, 也就是说输出到student中,

 

然后执行,执行成功,接下来去数据库里看看。

 

 我们看到date_year在表格中。下一个需求是,如果我不需要hiredate, job 和 mgr这几列,怎么办呢?

我们删除节点连接,加入字段选择,如下:

进入字段选择,获取选择的字段,做如下变更,

 设置完成之后,执行。

接下来去数据库查看,先把表删除掉,

mysql> drop table emp;
Query OK, 0 rows affected (0.02 sec)

 发现mgn已经删除,而且新的名字 hire_date也改过来了。

我们可以随意在两个节点之间断开,比如,这里我要求每个人的薪水加100块,我们加入一个新的计算器2,可是发现并没有增加100块的选择,这时候,我们需要在计算器之前增加一个常量:

 

常量设置如下:

计算器2设置如下,增加一个新的列new_sal, 把sal和inc_sal相加,设置如下:

 到这里还没结束,我们还需要多字段选择和输出进行必要的一些设置,否则会出错,首先对字段选择设置,删除inc_sal, 这个不需要,manager字段也不要了。

对于输出,需要把表emp删除,drop table emp;

然后SQL->执行一遍,这一步很重要,否则运行会出错。当你每次运行结束以后,如果你再次删除emp表,你都需要再来执行一次:

 最后再进行启动。

我们来看一下表的结果:

 结果是OK的。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值