kettle庖丁解牛第20篇之JSON输出

Posted 飞哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kettle庖丁解牛第20篇之JSON输出相关的知识,希望对你有一定的参考价值。

引言

在上一篇文章中,我们主要讲解的是:kettle中的Microsoft Excel 输出组件。

在本篇文章中,我们主要讲解的是:JSON输出组件(JSON output)。

要想学明白JSON输出组件,我们就有必要扩展着聊聊,JSON的那些事了。

JSON简介

JSON的全称是"javascript Object Notation",意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?

因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以更倾向于选择JSON来交换数据。

JSON3种数据结构

键值对

键值对是JSON中最基本的数据结构

 "Name": "大飞哥"

在上面的例子中属性"Name"是用一对双引号括起来的一个字符串。而它的值"大飞哥"在这个例子中也是一个字符串,当然它还可以是其他类型。

对象

一个JSON对象是包含了一组未排序键值对的集合。

        "person" :

        "age" : "35",

        "sex" : "男",

        "name" : "大飞哥",

        "weight" : "75kg",

        "height" : "170cm"

                         

       

上面的例子中person对象包含了5个属性,它们之间用,进行分割。

数组

JSON中用[]来表示数组元素

          "people" : [

                              "firstName": "大", "lastName": "飞哥", "age": 35 ,

                              "firstName": "大", "lastName": "数据", "age": 32

                         ]

       

JSON6种数据类型

string类型

字符串,必须要用双引号引起来。

number类型

数值,与JavaScript的number一致,整数(不使用小数点或指数计数法)最多为15位,小数的最大位数是17。

object类型

JavaScript的对象形式, key:value表示方式,可嵌套。

array类型

数组,JavaScript的Array表示方式[value],可嵌套。

布尔类型

true/false,JavaScript的boolean类型。

null类型

空值,JavaScript的null。

JSON的优缺点

优点

a、数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;

b、易于解析,客户端JavaScript可以通过eval()进行JSON数据的读取;  

c、支持多种语言,便于服务器端的解析;    

d、直接为服务器端代码使用,简化服务器端和客户端的代码开发量,并且易于维护。

缺点

a、没有XML格式推广的好,没有XML那么通用性;  

b、JSON格式目前在Web Service中,推广还属于初级阶段。

JSON相关网址

json中文官网

http://www.json.org/json-zh.html

json官网

http://www.json.org/

转换

转换(transaformation)是ETL解决方案中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。

创建转换

我们要做的ETL操作,全是在转换中设计的,所以我们要先创建一个转换。

kettle庖丁解牛第20篇之JSON输出_etl

kettle庖丁解牛第20篇之JSON输出_json_02

保存转换

kettle庖丁解牛第20篇之JSON输出_javascript_03

给你新建的转换,起个名字,并保存

kettle庖丁解牛第20篇之JSON输出_kettle_04

kettle庖丁解牛第20篇之JSON输出_javascript_05

JSON输出

此组件可以实现,将数据流以JSON的格式输出到文件中保存。

kettle庖丁解牛第20篇之JSON输出_javascript_06

kettle庖丁解牛第20篇之JSON输出_etl_07

一般

kettle庖丁解牛第20篇之JSON输出_etl_08

选项说明

选项

描述

操作

分为3种,write tofile是直接写到js文件,Output value是以值的方式输出到流里,Output value and write to file是即输出到js文件又输出到值里

JSON条目名称

最终保存json数据它的名字

一个数据条目的数据行

意思是分组输出,0默认全部分为一组输出,其他比如1,就是每1行数据一组,分批输出到多个文件中

输出值

输出到流里的字段名称

兼容模式

兼容模式

文件名

数据最终输出到的目标文件

追加方式

以追加方式输出到文件,就是不覆盖,而是输出到文件尾部

创建父文件夹

创建父文件夹

启动时不创建文件

转换启动时不创建js文件

扩展名

数据最终保存的文件扩展名

编码

数据最终保存到文件中的编码格式

发送结果到servlet

发送结果到servlet;

添加日期到文件名

选择在扩展名之前输出日期,例如:_20190816

添加时间到文件名

选择在扩展名之前输出时间,例如:_235959

显示文件名

最终你的数据保存到目标文件名

结果中添加文件名

选择将文件名添加到内部文件名结果集。此内部结果集稍后可用于处理所有已创建的文件

字段

选项说明

选项

描述

字段名

数据流中的列名

元素名称

json数据中的key名

实战演示

我们要演示从txt文件中读取数据,然后通过JSON输出组件,把数据最终保存在js文件中。

a、创建txt文件

我在D盘下,创建一个txt文件,命名为test。第1行是文件表头,从第2行开始是数据。此文件有3列数据,每1列通过","分割。我使用的分割符,它是英文的。你要注意你的分割符,它是中文的?还是英文的?

kettle庖丁解牛第20篇之JSON输出_kettle_09

b、创建转换

kettle庖丁解牛第20篇之JSON输出_javascript_10

c、文本文件输入设置

增加txt文件做为数据源

kettle庖丁解牛第20篇之JSON输出_json_11

kettle庖丁解牛第20篇之JSON输出_json_12

kettle庖丁解牛第20篇之JSON输出_kettle_13

kettle庖丁解牛第20篇之JSON输出_json_14

设置数据源txt文件,每1列数据之间使用","分割。并且第1行要跳过,从第2行开始是数据。

kettle庖丁解牛第20篇之JSON输出_json_15

从数据源txt文件中,获取表头字段名

kettle庖丁解牛第20篇之JSON输出_kettle_16

kettle庖丁解牛第20篇之JSON输出_kettle_17

kettle庖丁解牛第20篇之JSON输出_kettle_18

设置最小宽度(防止报错:kettle java.lang.OutOfMemoryError: Requested array size exceeds VM limit)

kettle庖丁解牛第20篇之JSON输出_json_19

kettle庖丁解牛第20篇之JSON输出_JSON输出_20

d、文本文件输入预览记录

kettle庖丁解牛第20篇之JSON输出_etl_21

kettle庖丁解牛第20篇之JSON输出_etl_22

kettle庖丁解牛第20篇之JSON输出_json_23

e、JSON输出组件

kettle庖丁解牛第20篇之JSON输出_json_24

使用鼠标左键点击 文本文件输入组件,按住shift键,从文本文件输入组件拖拽到JSON输出组件,拖拽后的效果如下图:

kettle庖丁解牛第20篇之JSON输出_JSON输出_25

f、JSON输出设置

kettle庖丁解牛第20篇之JSON输出_json_26

kettle庖丁解牛第20篇之JSON输出_json_27

g、运行转换

kettle庖丁解牛第20篇之JSON输出_etl_28

kettle庖丁解牛第20篇之JSON输出_json_29

kettle庖丁解牛第20篇之JSON输出_json_30

kettle庖丁解牛第20篇之JSON输出_etl_31

h、验证结果文件

kettle庖丁解牛第20篇之JSON输出_javascript_32

实战演示扩展

a、JSON输出设置

kettle庖丁解牛第20篇之JSON输出_etl_33

b、运行转换

kettle庖丁解牛第20篇之JSON输出_etl_28

kettle庖丁解牛第20篇之JSON输出_json_29

kettle庖丁解牛第20篇之JSON输出_json_30

kettle庖丁解牛第20篇之JSON输出_etl_31

c、验证结果文件

kettle庖丁解牛第20篇之JSON输出_javascript_38

d、总结

数据源test.txt中有3行数据,我们在JSON输出设置中,一个数据条目的数据行为1。这样数据源中的3行数据,就分别保存到了3个js文件中。我们打开这3个js文件,看看里面的数据情况。

kettle庖丁解牛第20篇之JSON输出_etl_39

kettle庖丁解牛第20篇之JSON输出_JSON输出_40

kettle庖丁解牛第20篇之JSON输出_kettle_41

结束语

本篇文章主要讲解了:JSON输出组件的各种详细设置,最后实战演示了,从文本文件中读取数据,然后通过JSON 输出组件,把数据最终保存在js文件中。

兄弟们,其实想和作是有一段距离的,你想着想着就没有了,可是你做着做着,它就落地了。

啥都别说了,兄弟们后面跟着我干就完了,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!

以上是关于kettle庖丁解牛第20篇之JSON输出的主要内容,如果未能解决你的问题,请参考以下文章

kettle庖丁解牛第27篇之多种数据源统一输出

kettle庖丁解牛第14篇之JSON输入

kettle庖丁解牛第28篇之oracle数据迁移到mysql库

kettle庖丁解牛第2篇之初识kettle

kettle庖丁解牛第10篇之表输入

kettle庖丁解牛第26篇之删除