You need to enable JavaScript to run this app.
导航
CSV
最近更新时间:2024.08.20 17:38:32首次发布时间:2024.08.20 17:38:32
复制全文
我的收藏
有用
有用
无用
无用

CSV Format 允许我们基于 CSV schema 进行解析和生成 CSV 数据。目前 CSV schema 是基于 table schema 推断而来的。

如何创建使用 CSV 格式的表

以下是一个使用 Kafka 连接器和 CSV 格式创建表的示例。

CREATE TABLE user_behavior (
  user_id BIGINT,
  item_id BIGINT,
  category_id BIGINT,
  behavior STRING,
  ts TIMESTAMP(3)
) WITH (
 'connector' = 'kafka',
 'topic' = 'user_behavior',
 'properties.bootstrap.servers' = 'localhost:9092',
 'properties.group.id' = 'testGroup',
 'format' = 'csv',
 'csv.ignore-parse-errors' = 'true',
 'csv.allow-comments' = 'true'
)

Format 参数

参数

是否必选

默认值

类型

描述

format

必选

(none)

String

指定要使用的格式,这里应该是 'csv'

csv.field-delimiter

可选

,

String

字段分隔符 (默认','),必须为单字符。您可以使用反斜杠字符指定一些特殊字符,例如 '\t' 代表制表符。您也可以通过 unicode 编码在纯 SQL 文本中指定一些特殊字符,例如 'csv.field-delimiter' = U&'\0001' 代表 0x01 字符。

csv.disable-quote-character

可选

false

Boolean

是否禁止对引用的值使用引号 (默认是 false). 如果禁止,选项 'csv.quote-character' 不能设置。

csv.quote-character

可选

"

String

用于围住字段值的引号字符 (默认")。

csv.allow-comments

可选

false

Boolean

是否允许忽略注释行(默认不允许),注释行以 '#' 作为起始字符。如果允许注释行,请确保 csv.ignore-parse-errors 也开启了从而允许空行。

csv.ignore-parse-errors

可选

false

Boolean

当解析异常时,是跳过当前字段或行,还是抛出错误失败(默认为 false,即抛出错误失败)。如果忽略字段的解析异常,则会将该字段值设置为null

csv.array-element-delimiter

可选

;

String

分隔数组和行元素的字符串(默认';'

csv.escape-character

可选

(none)

String

转义字符(默认关闭)。

csv.null-literal

可选

(none)

String

是否将 "null" 字符串转化为 null 值。

csv.write-bigdecimal-in-scientific-notation

可选

true

Boolean

设置将 Bigdecimal 类型的数据表示为科学计数法(默认为true,即需要转为科学计数法),例如一个BigDecimal的值为100000,设置true,结果为 '1E+5';设置为false,结果为 100000。注意:只有当值不等于0且是10的倍数才会转为科学计数法。

注意:仅适用于 Flink1.16 版本,只有当值不等于 0 且 是 1 0 的 倍数才会转为科学计数法

数据类型映射

目前 CSV 的 schema 都是从 table schema 推断而来的。显式地定义 CSV schema 暂不支持。 Flink 的 CSV Format 数据使用 jackson databind API 去解析 CSV 字符串。
下面的表格列出了 flink 数据和 CSV 数据的对应关系。

Flink SQL 数据类型

CSV 数据类型

CHAR / VARCHAR / STRING

string

BOOLEAN

boolean

BINARY / VARBINARY

string with encoding: base64

DECIMAL

number

TINYINT

number

SMALLINT

number

INT

number

BIGINT

number

FLOAT

number

DOUBLE

number

DATE

string with format: date

TIME

string with format: time

TIMESTAMP

string with format: date-time

INTERVAL

number

ARRAY

array

ROW

object