背景
由于前段时间在学习Kettle的相关知识,在网络上搜寻很久都没有收到有关Kettle的相关中文文档,在学习的过程中看英文文档花费了很多时间。现阶段刚好比较空闲,所以准备对Kettle的常用的组件进行尝试翻译,以供参考,有翻译不当之处,希望大家批评指正。
本文所提到的组件是Kettle 8.2的一些常用组件,希望对你有帮助。
1、CSV文件
在学习CSV文件输入步骤时,先介绍一下CSV文件。
CSV :逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。
2、 CSV File Input 步骤
CSV File Input 输入步骤从csv文本文件中读取数据到PDI转换中,即Kettle的转换中。虽然这个步骤叫做“CSV文件输入”步骤,但是你也可以使用CSV文件输入步骤读取使用用其他列分隔符分隔的文本文件,例如“|”,Tab 和“;”作为列分隔的文件。
注意:
1、英文分号(;)是这个步骤的默认列分隔符
2、这个步骤的选项是文本文件输入步骤选项的子集,此步骤和文本文件输入步骤的区别如下:
①NIO文件读取——使用非阻塞是IO进行系统调用以加快文件的读取速率,仅限于读取本地文件,不支持VFS文件读取。
②并行运行——如果将此步骤配置为以多个副本(或集群模式)运行,并启用并行运行,则每个副本将读取单个文件的一个单独块。你可以将文件的读取分布到集群转换中的多个线程,甚至多个从节点。
③延迟转换——如果你正在从文件中读取许多字段,并且其中许多字段在转换中不会被操作,仅仅通过转换传递到其他文本文件或数据库中,延迟转换可以防止PDI对这些字段执行不必要的操作(例如将它们转换为字符串、日期或数字等对象)。
你可以在data-integration/samples/transformations 目录下找到一个简单的CSV文件输入转换的例子(CSV Input - Reading customer data.ktr)
选项
CSV文件输入步骤有如下选项:
选项 | 选项描述 |
---|---|
步骤名 | 在画布上指定CSV文件输入步骤的唯一名称。可以自定义名称,也可以保留默认名称。 |
文件名(或者文件名字段) | 指定下列名称之一:①CSV源文件名②如果CSV文件输入步骤从另一个步骤接收数据,则包含多个源文件名称的字段的名称(文件名字段)。如果CSV文件输入步骤接收到数据,输出中是否包含文件名选项也出现 |
输出中包含文件名? | 如果CSV文件输入接收到来自另一个步骤的数据,请指明输入源文件的名称是否应该包含在CSV文件输入步骤的输出中。 |
列分隔符 | 指定源文件中使用的文件分隔符字符。特殊字符(例如CHAR HEX01)可以使用 [ v a l u e ] 格 式 设 置 例 如 [value]格式设置例如 [value]格式设置例如[01]或$[6F,FF,00,1F] 。注意:默认的里分隔符是分号(;) |
封闭符 | 指定源文件中使用的封闭符。特殊字符(例如CHAR HEX01)可以使用 [ v a l u e ] 格 式 设 置 例 如 [value]格式设置例如 [value]格式设置例如[01]或$[6F,FF,00,1F] |
NIO缓存大小 | 指定读取缓冲区的大小,即一次从源文件读取的字节数。 |
简易(延迟)转换 | 判断使用延迟转换算法是否可以提高性能。如果可能,延迟转换算法试图避免不必要的数据类型转换。它可以导致显著的性能改进。典型的例子是从文本文件中读取数据并将其写入文本文件 |
包含列头行? | 指明是否包含源文件的列名的行 |
添加文件名到结果 | 将CSV源文件名添加到此转换的结果中 |
行号字段(可选) | 指定将在此步骤的输出中包含行号的字段的名称 |
并发运行? | 指示是否运行此步骤的多个实例(步骤副本),以及是否希望每个实例读取CSV文件的单独部分。当读取多个文件时,将考虑所有文件的总大小来划分工作负载。在这种特定情况下,确保所有步骤副本都接收到需要读取的所有文件,否则并行算法将无法正常工作。注意: 出于技术原因,只支持在没有换行符或回车字段的文件上并行读取CSV文件。 |
字段中有回车换行? | 指明数据字段中包含回车是否换行 |
文件编码 | 指明源文件的文件编码 |
**补充:**csv文件封闭符是包裹住记录字段的字符,如"姓名",“性别”,其中双引号("")是封闭符,逗号(,)是分隔符。
字段
列 | 描述 |
---|---|
名称 | 列名 |
类型 | 列的数据类型(只能是String, Date, 或者Number) |
格式 | 用于转换原始字段格式的可选掩码。有关可在此步骤中使用的公共有效日期和数字格式的信息,请参阅公共格式 |
长度 | 字段的长度取决于以下字段类型:①数字: 数字中有效数字的个数 ②字符串:字符串的长度 ③日期: 字符串打印输出的长度(例如,年的长度是4个字符) |
精度 | 浮点数的小数点后的有效数字个数 |
货币符号 | 用于表示货币的符号(例如$5,000.00或€5.000,00) |
小数点符号 | 小数点可以是“.”或“,”(例如,5,000.00或5.000,00) |
分组符号 | 分组符号可以是“,”或“."(例如,5,000 0.00或5,000,00) |
去除空格类型 | 适用于字符串的裁剪方法 |
点击预览可以预览从源文件输入的数据
源数据注入支持
可以使用ETL元数据注入步骤支持的元数据注入字段在运行时将元数据传递到转换
以下选项和值字段的CSV文件输入步骤支持元数据注入:
- 选项: 文件名, 分隔符, 封闭符, NIO缓存大小, 延迟转换, 包含列头行?, 添加文件名到结果,添加行号字段, 并发运行?和 文件编码
- 值: 名称, 长度, 小数点符号, 类型, 精度, 分组符号, 格式, 货币符号和去除空格类型
文档原文地址 :https://help.pentaho.com/Documentation/8.2/Products/Data_Integration/Transformation_Step_Reference/CSV_File_Input