- Get data from XML设置
将文件添加到选择文件区域
选择get xpath nodes
设置fileds
- Excel输出设置
这里先不描述
- XML output设置
- 输出的文件为:
{ "missions": [ { "id": "59434767", "timestamp": "2011-11-21 09:21:53", "data": [ { "field": "13776121", "value": "Baylor Dallas" }, { "field": "13776401", "value": "CHF" }, { "field": "13777966", "value": "John Doe" }, { "field": "13780027", "value": "9999" } ] }, { "id": "59474875", "timestamp": "2011-11-21 17:01:22", "data": [ { "field": "13776121", "value": "Healthsouth," }, { "field": "13776401", "value": "Pneumonia" }, { "field": "13777966", "value": "Jane Doe" } ] }], "total": 2, "pages": 1 }
- 步骤设计
转换步骤设计如下:
- json input 设置
File选项设置:
设置文件地址:XX\read-nested-fields.js
content选项设置为默认设置
fields选项设置:
id $.missions…id 中$表示json数据,.missions…id表示获取该文件中missions下的子元素的中的id子元素。
data $.missions…data 中$表示json数据,.missions…data表示获取该文件中missions下的子元素的中的data子元素。
- json input get -nested fields设置
File选项设置:
勾选source is from previous step,表示选择读取上一步骤的源字段
select field:会自动提示上一步骤中的data和id字段,这里勾选data字段。
fileds选项设置
- excel output设置
与前面基本类似,重点在于设置字段选择 - json out put 设置
拓展 JSON
JSON格式相关
基于数据库的数据导入与导出
实验步骤
当前,市场上主流的关系型数据库有MySQL、Oracle、SQL Server、DB2等。面对这些类型的关系型数据库,Kettle都可以使用“表输入”“表输出”这两个步骤完成数据的导入与导出。
本实验读入student表数据,输出满足身高大于等于170,成绩大于等于80的学生数据。输出的数据存储在StuOut表中。
1.在mysql命令行执行student.sql脚本脚本内容
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `学号` int(11) NOT NULL, `姓名` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `性别` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `班级` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `年龄` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `成绩` int(15) NULL DEFAULT NULL, `身高` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `手机` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`学号`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES (1, '张一', '男', '1701', '16', 78, '170', '18946554571'); INSERT INTO `student` VALUES (2, '李二', '男', '1701', '17', 80, '175', '18946554572'); INSERT INTO `student` VALUES (3, '谢逊', '男', '1702', '18', 95, '169', '18946554573'); INSERT INTO `student` VALUES (4, '赵玲', '女', '1702', '19', 86, '180', '18956257895'); INSERT INTO `student` VALUES (5, '赵明', '男', '1704', '20', 85, '185', '18946554575'); INSERT INTO `student` VALUES (6, '张三', '女', '1704', '18', 92, '169', '18946554576'); SET FOREIGN_KEY_CHECKS = 1;
执行脚本
source /home/ubuntu/student.sql • 1
2.新建转换如下
- data grid设置
- table input设置
创建mysql_conn连接,并测试
测试完成后,执行Get SQL select statement
修改sql语句,添加
WHERE 身高>? AND 成绩>?
这一步骤需要勾选Replace variables in,并选择insert data from step选择上一步骤的data grid。
完整SQL为:
SELECT 学号 , 姓名 , 性别 , 班级 , 年龄 , 成绩 , 身高 , 手机 FROM student WHERE 年龄 >? AND 成绩 > ?
- table output
选择target后,可以执行下sql
- 执行sql后,可以映射字段
注意:这里可以多次尝试,比如去掉specify database fields,get fields ,table field的字段可以手动选择。
拓展 kettle分享数据库连接
先在一个转换中创建连接后,通过view – 》database connections --》 数据库连接–》share就可以分享了