双击 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的。