Kettle8.2转换之CSV-JavaScript-Xml
- 目的: 该案例实现将csv文件内容抽取,通过js转换,将结果加载到xml文件
- 环境: kettle8.2 + Windows 10 + jdk1.8
- 运行方式: 1. Spoon.bat 2.Pan.bat
一、需求分析
- 数据源:list.csv,内容如下所示:
last_name,name Suarez,Maria Guimaraes,Joao Rush,Jennifer Ortiz,Camila Rodriguez,Carmen da Silva,Zoe
- 期望结果保存到xml文件中,期望结果内容如下:
<?xml version='1.0' encoding='UTF-8'?> <Rows> <Row> <msg>Hello, Maria!</msg> </Row> <Row> <msg>Hello, Joao!</msg> </Row> <Row> <msg>Hello, Jennifer!</msg> </Row> <Row> <msg>Hello, Camila!</msg> </Row> <Row> <msg>Hello, Carmen!</msg> </Row> <Row> <msg>Hello, Zoe!</msg> </Row> </Rows>
二、配置Transformation
-
双击Spoon.bat,打开Spoon可视化界面
-
新建一个转换,选择案例所需组件(即Steps)
-
输入组件:CSV文件输入,拖入右侧工作区中
-
转换组件:JavaScript代码,拖入右侧工作区中
-
输出组件:Xml output,拖入右侧工作区中
-
利用连接线(即Hop)将各个步骤连接起来
-
transformation总体结构如下图所示:
-
配置CSV文本输入组件,配置如下:
-
配置JavaScript代码组件,配置如下:
-
配置Xml ouput组件,配置如下:
-
save保存转换,选择保存路径,最后配置如下所示:
三、两种运行方式及结果分析
-
第一种:直接在Spoon中运行,点击运行按钮,选中运行方式,启动即可
运行结果如下:
简单对结果做下分析,我们知道kettle里面是以数据行作为最小的执行单元,以并发的方式执行每个步骤,而跳(hop)作为数据行流通的单向管道,故我们可以简单看下Metrisc所展现的执行过程,可以从中大概看得出来步骤是并发执行的,如下:
最后的结果,我们也可以从所生成的文件中得到验证,还可以从控制台中的Preview data中看出结果,如下:
文件中的内容打开后,如下:
-
第二种:利用Pan.bat来执行当前的转换,打开cmd进入到Pan.bat所在的文件夹下,执行如下命令即可,
请注意命令中涉及到的转换所在路径改成你们自己的路径即可
Pan.bat /file D:\ETL_LOCAL_REPO\transformations\trans-csv-js-xml.ktr
或者执行下面命令也行:
Pan.bat /file D:\ETL_LOCAL_REPO\transformations\trans-csv-js-xml.ktr /norep
上述命令区别在于最后有没有/norep。而/norep表示要求Spoon不要连接到资源库。
通过上述命令执行后,也会得到上述的结果
内容如下: