CSVReader¶
描述¶
解析 CSV 格式的数据,将 CSV 文件中的每一行作为单独的记录返回。该读取器允许根据 CSV 的第一行推断架构(如果存在“标头行”),或提供用于解读值的显式架构。有关更多文档,请参阅控制器服务的用法。
属性¶
下表列出了各项属性,其中带星号 (*) 的为必需属性。其他属性视为可选属性。该表还指出了所有默认值以及属性是否支持 NiFi 表达式语言。
显示名称 |
API 名称 |
默认值 |
允许值 |
描述 |
---|---|---|---|---|
CSV 格式 * |
CSV 格式 |
custom |
|
指定 CSV 数据采用的“格式”,或指定是否应使用自定义格式。 |
注释标记 |
注释标记 |
用于表示注释开头的字符。以此注释开头的所有行都将被忽略。 |
||
日期格式 |
日期格式 |
指定读取/写入“Date”字段时使用的格式。如果未指定,则将假定“Date”字段为自纪元(1970 年 1 月 1 日午夜 GMT)以来的毫秒数。如果指定,则该值必须与 Java java.time.format.DateTimeFormatter 格式相匹配(例如,MM/dd/yyyy 表示两位数的月份,然后是两位数的日期、四位数的年份,全部由“/”字符分隔,如 01/01/2017)。 |
||
转义字符 * |
转义字符 |
该字符用于转义那些原本对 CSV 解析器有特定含义的字符。如果通过表达式语言指定了该属性,但表达式在运行时被评估为无效的引用字符,则系统将跳过该属性并使用默认的引用字符。将其设置为空字符串意味着不应使用转义字符。 |
||
空值字符串 |
空值字符串 |
指定一个字符串,如果该字符串作为值存在于 CSV 中,则应将其视为空值字段,而非使用字面量值。 |
||
引用字符 * |
引用字符 |
" |
该字符用于引用值,这样就不必使用转义字符。如果通过表达式语言指定了该属性,但表达式在运行时被评估为无效的引用字符,则系统将跳过该属性并使用默认的引用字符。 |
|
记录分隔符 * |
记录分隔符 |
n |
指定用于分隔 CSV 记录的字符 |
|
将第一行视为标头 * |
跳过标头行 |
false |
|
指定是否应将 CSV 的第一行视为标头或是否应将其视为记录。如果架构访问策略指示必须在标头中定义列,则此属性将被忽略,因为标头必须始终存在且不会作为记录进行处理。否则,如果为“true”,则 CSV 数据的第一行将不作为记录处理;如果为“false”,则第一行将被解读为记录。 |
时间格式 |
时间格式 |
指定读取/写入“Time”字段时使用的格式。如果未指定,则将假定“Time”字段为自纪元(1970 年 1 月 1 日午夜 GMT)以来的毫秒数。如果指定,则该值必须与 Java java.time.format.DateTimeFormatter 格式相匹配(例如,HH:mm:ss 表示 24 小时格式的两位小时数、两位分钟数和两位秒数,全部由“:”字符分隔,如 18:04:15)。 |
||
时间戳格式 |
时间戳格式 |
指定读取/写入“Timestamp”字段时使用的格式。如果未指定,则将假定“Timestamp”字段为自纪元(1970 年 1 月 1 日午夜 GMT)以来的毫秒数。如果指定,则该值必须与 Java java.time.format.DateTimeFormatter 格式相匹配(例如,MM/dd/yyyy HH:mm:ss 表示两位数的月份,然后是两位数的日期、四位数的年份,全部由“/”字符分隔;然后依次是 24 小时格式的两位小时数、两位分钟数和两位秒数,全部由“:”字符分隔,如 01/01/2017 18:04:15)。 |
||
修剪字段 * |
修剪字段 |
true |
|
是否应从字段的开头和末尾移除空格 |
修剪双引号 * |
修剪双引号 |
true |
|
是否修剪开头和结尾的双引号。例如:若使用修剪字符串,“"test"”会解析为 “test”,若不使用修剪字符串,则会解析为“"test"”。如果设置为“false”,则表示完全符合 RFC-4180。默认值为 true,且使用修剪字符串。 |
值分隔符 * |
值分隔符 |
, |
该字符用于分隔 CSV 记录中的值/字段。如果通过表达式语言指定了该属性,但表达式在运行时被评估为无效的值分隔符,则系统将跳过该属性并使用默认的值分隔符。 |
|
CSV 解析器 * |
csv-reader-csv-parser |
commons-csv |
|
指定使用哪个解析器来读取 CSV 记录。NOTE:不同的解析器可能支持不同的功能子集,也可能表现出不同的性能级别。 |
允许使用重复的标头名称 |
csvutils-allow-duplicate-header-names |
true |
|
是否允许使用重复的标头名称。标头名称区分大小写,例如“name”和“Name”会被视为不同的字段。重复标头名称的处理因具体的 CSV 解析器而异(如果适用):*Apache Commons CSV – 重复的标头将导致列数据向右“移动”,并为“unknown_field_index_X” 创建新字段,其中“X”是 CSV 列索引号* Jackson CSV – 重复的标头将被去重,字段值是最右边重复 CSV 列的值* FastCSV – 重复的标头将被去重,字段值是最左边重复 CSV 列的值 |
字符集 * |
csvutils-character-set |
UTF-8 |
用于对 CSV 文件进行编码/解码的字符编码 |
|
忽略 CSV 标头列名称 |
ignore-csv-header |
false |
|
如果 CSV 的第一行是标头,并且配置的架构与标头行中指定的字段不匹配,则这会控制读取器解读字段的方式。如果此属性为 true,则映射到每列的字段名称仅由配置的架构驱动,所有不在架构中的字段都将被忽略。如果此属性为 false,则在 CSV 标头中找到的字段名称将用作字段的名称。 |
架构访问策略 * |
schema-access-strategy |
infer-schema |
|
指定如何获取用于解读数据的架构。 |
架构分支 |
schema-branch |
指定在“架构注册表”属性中查找架构时使用的分支名称。如果所选架构注册表不支持分支,则该值将被忽略。 |
||
架构名称 |
schema-name |
${schema.name} |
指定要在架构注册表属性中查找的架构的名称。 |
|
架构参考读取器 * |
schema-reference-reader |
服务实现,负责读取 FlowFile 属性或内容以确定架构参考标识符 |
||
架构注册表 |
schema-registry |
指定用于架构注册表的控制器服务 |
||
架构文本 |
schema-text |
${avro.schema} |
Avro 格式架构的文本 |
|
架构版本 |
schema-version |
指定要在架构注册表中查找的架构版本。如果未指定,则将检索架构的最新版本。 |
状态管理¶
此组件不存储状态。
受限¶
此组件不受限制。
系统资源注意事项¶
此组件未指定系统资源注意事项。