CSVReader

描述

解析 CSV 格式的数据,将 CSV 文件中的每一行作为单独的记录返回。该读取器允许根据 CSV 的第一行推断架构(如果存在“标头行”),或提供用于解读值的显式架构。有关更多文档,请参阅控制器服务的用法。

标签

comma、csv、delimited、parse、reader、record、row、separated、values

属性

下表列出了各项属性,其中带星号 (*) 的为必需属性。其他属性视为可选属性。该表还指出了所有默认值以及属性是否支持 NiFi 表达式语言。

显示名称

API 名称

默认值

允许值

描述

CSV 格式 *

CSV 格式

custom

  • 自定义格式

  • RFC 4180

  • Microsoft Excel

  • 制表符分隔

  • MySQL 格式

  • Informix 卸载

  • Informix 卸载转义已禁用

指定 CSV 数据采用的“格式”,或指定是否应使用自定义格式。

注释标记

注释标记

用于表示注释开头的字符。以此注释开头的所有行都将被忽略。

日期格式

日期格式

指定读取/写入“Date”字段时使用的格式。如果未指定,则将假定“Date”字段为自纪元(1970 年 1 月 1 日午夜 GMT)以来的毫秒数。如果指定,则该值必须与 Java java.time.format.DateTimeFormatter 格式相匹配(例如,MM/dd/yyyy 表示两位数的月份,然后是两位数的日期、四位数的年份,全部由“/”字符分隔,如 01/01/2017)。

转义字符 *

转义字符

该字符用于转义那些原本对 CSV 解析器有特定含义的字符。如果通过表达式语言指定了该属性,但表达式在运行时被评估为无效的引用字符,则系统将跳过该属性并使用默认的引用字符。将其设置为空字符串意味着不应使用转义字符。

空值字符串

空值字符串

指定一个字符串,如果该字符串作为值存在于 CSV 中,则应将其视为空值字段,而非使用字面量值。

引用字符 *

引用字符

"

该字符用于引用值,这样就不必使用转义字符。如果通过表达式语言指定了该属性,但表达式在运行时被评估为无效的引用字符,则系统将跳过该属性并使用默认的引用字符。

记录分隔符 *

记录分隔符

n

指定用于分隔 CSV 记录的字符

将第一行视为标头 *

跳过标头行

false

  • true

  • 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

  • false

是否应从字段的开头和末尾移除空格

修剪双引号 *

修剪双引号

true

  • true

  • false

是否修剪开头和结尾的双引号。例如:若使用修剪字符串,“"test"”会解析为 “test”,若不使用修剪字符串,则会解析为“"test"”。如果设置为“false”,则表示完全符合 RFC-4180。默认值为 true,且使用修剪字符串。

值分隔符 *

值分隔符

,

该字符用于分隔 CSV 记录中的值/字段。如果通过表达式语言指定了该属性,但表达式在运行时被评估为无效的值分隔符,则系统将跳过该属性并使用默认的值分隔符。

CSV 解析器 *

csv-reader-csv-parser

commons-csv

  • Apache Commons CSV

  • Jackson CSV

  • FastCSV

指定使用哪个解析器来读取 CSV 记录。NOTE:不同的解析器可能支持不同的功能子集,也可能表现出不同的性能级别。

允许使用重复的标头名称

csvutils-allow-duplicate-header-names

true

  • true

  • false

是否允许使用重复的标头名称。标头名称区分大小写,例如“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

  • true

  • 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

指定要在架构注册表中查找的架构版本。如果未指定,则将检索架构的最新版本。

状态管理

此组件不存储状态。

受限

此组件不受限制。

系统资源注意事项

此组件未指定系统资源注意事项。

语言: 中文