0

kettle庖丁解牛第12篇之CSV文件输入

 2 years ago
source link: https://blog.51cto.com/51power/5240687
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上一篇文章中,我们介绍了:Excel输入组件的各种详细设置,实战演示了如何操作它来读取电脑中的一个Excel文件。

在本篇文章中,我们接着介绍:kettle中的CSV文件输入组件。

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

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

kettle庖丁解牛第12篇之CSV文件输入_编码

kettle庖丁解牛第12篇之CSV文件输入_CSV文件输入_02

kettle庖丁解牛第12篇之CSV文件输入_CSV文件输入_03

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

kettle庖丁解牛第12篇之CSV文件输入_文本文件输入_04

kettle庖丁解牛第12篇之CSV文件输入_ETL_05

CSV文件输入

此组件可以实现,从指定的CSV文件输入数据。

kettle庖丁解牛第12篇之CSV文件输入_文本文件输入_06

kettle庖丁解牛第12篇之CSV文件输入_编码_07

kettle庖丁解牛第12篇之CSV文件输入_kettle_08

要读取的CSV文件名

文件中每一列数据之间,使用的分割符。

指定源文件中使用的结束字符

NIO的缓冲区大小

指定读取缓冲区的大小,指一次从源文件读取的字节数。

设置是否可以使用延迟转换算法来提高性能。简易转换算法尽可能避免不必要的数据类型转换。它可以显著提高性能。

包含列头行

指示源文件是否包含列名的一个标题行

将文件添加到结果文件中

将CSV源文件名添加到此转换的结果中

行号字段(可选)

指定将在此步骤的输出中包含的字段名称的行号,即:标题行号

设置是否将运行此步骤的多个实例(步骤副本),以及是否希望每个实例读取CSV文件的单独部分。当读取多个文件时,将考虑所有文件的总大小来分割工作负载。在这种特定的情况下,请确保所有步骤副本都接收到需要读取的所有文件,否则并行算法将不能正确工作。

字段中有回车换行?

设置数据字段是否可能包含换行字符

选择文件格式,可以是DOS、UNIX或mixed。UNIX文件是以换行符结束的行。DOS文件用回车符和换行符分隔的行。如果指定mixed,则不执行验证。

指定源文件的编码,防止读取的数据乱码

字段的名称。

字段的类型(String,Date或Number)。

用于转换原始字段格式的可选格式掩码。

字段的长度取决于以下字段类型:Number:一个数字中有效数字的总数;String:字符串的总长度;Date:字符串打印输出的长度

用于数字类型字段的浮点数。

用于表示货币的符号(例如$5,000或€5,000,00)。

小数点符号

小数点可以是"."或","(例如,5,000.00或5.000,00)。

一个分组可以是","或"."(例如5,000.00或5.000,00)。

去除空格类型

应用于字符串的修剪方法。

a、创建csv文件

我在D盘下,创建一个csv文件,命名为bigdata。第1行是文件表头,从第2行开始是数据,此文件有2列数据.。

kettle庖丁解牛第12篇之CSV文件输入_CSV文件输入_09

b、创建转换

kettle庖丁解牛第12篇之CSV文件输入_文本文件输入_10

c、CSV文件输入设置

kettle庖丁解牛第12篇之CSV文件输入_编码_11

kettle庖丁解牛第12篇之CSV文件输入_kettle_12

kettle庖丁解牛第12篇之CSV文件输入_编码_13

kettle庖丁解牛第12篇之CSV文件输入_ETL_14

kettle庖丁解牛第12篇之CSV文件输入_编码_15

d、预览记录

kettle庖丁解牛第12篇之CSV文件输入_kettle_16

kettle庖丁解牛第12篇之CSV文件输入_kettle_17

kettle庖丁解牛第12篇之CSV文件输入_kettle_18

不给力啊,出现中文乱码了!!!我上面不是设置 文件编码为UTF-8格式了吗?大兄弟,这说明你没设置对,别拿UTF-8格式当成万能的编码方式。此处的编码,应该以文件本身的编码方式为准。

e、查看文件的实际编码

随便使用一种文本编辑器,此处我使用的是NotePad++

kettle庖丁解牛第12篇之CSV文件输入_ETL_19

kettle庖丁解牛第12篇之CSV文件输入_CSV文件输入_20

标红的部分,就是此csv文件真正的编码,GB2312简体中文。

f、修改CSV文件输入设置

kettle庖丁解牛第12篇之CSV文件输入_kettle_21

g、预览记录

kettle庖丁解牛第12篇之CSV文件输入_文本文件输入_22

kettle庖丁解牛第12篇之CSV文件输入_CSV文件输入_23

kettle庖丁解牛第12篇之CSV文件输入_kettle_24

数据显示正常了,看过我上面乱码的排查过程后,还是那句话:别拿UTF-8格式,当成万能的编码方式。此处的编码,应该以文件本身的编码方式为准。

其实CSV文件和TXT文件,它们都是文本文件。使用的是NotePad++,打开一个CSV文件后,你会发现它就是以“,”分割的文本文件。所以,使用文本文件输入组件,应该也能读取CSV文件。

kettle庖丁解牛第12篇之CSV文件输入_文本文件输入_25

a、拖拽 文本文件输入

kettle庖丁解牛第12篇之CSV文件输入_编码_26

b、文本文件输入 设置

kettle庖丁解牛第12篇之CSV文件输入_编码_27

kettle庖丁解牛第12篇之CSV文件输入_ETL_28

kettle庖丁解牛第12篇之CSV文件输入_文本文件输入_29

c、预览记录

kettle庖丁解牛第12篇之CSV文件输入_kettle_30

kettle庖丁解牛第12篇之CSV文件输入_CSV文件输入_31

kettle庖丁解牛第12篇之CSV文件输入_文本文件输入_32

出现这个界面的话,证明你也一样成功了。使用文本文件组件读取了CSV文件,恭喜恭喜!!!

本篇文章主要讲解了:CSV文件输入组件的各种详细设置,实战演示了如何操作它来读取磁盘上的CSV文件。最后还扩展了,使用文本文件输入组件读取读取磁盘上的CSV文件。

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK