FDELIMITEDPARSER
使用分隔符分隔值,从而解析数据。fdelimitedparser
加载分隔数据,将其存储在单值 VMap 中。
该解析器仅可用于 Flex 表。所有 Flex 解析器均会将数据作为单个 VMap 存储在 LONG VARBINAR_raw__
列中。如果某个数据行过大而无法适应该列,该数据行将被拒绝。Vertica 在加载带 NULL 指定列的数据时支持 NULL 值。
注意
默认情况下,fdelimitedparser
将空字段视为 NULL
,而不是空字符串 (''
)。这种行为使转换更容易。将 NULL 转换成整数 (NULL::int
) 是有效的,而将空字符串转换成整数 (''::int
) 则是无效的。如有需要,请使用 treat_empty_val_as_null
参数更改 fdelimitedparser
的默认行为。
语法
FDLIMITEDPARSER ( [parameter‑name='value'[,...]] )
参数
delimiter
- 单字符分隔符。
默认值:
|
record_terminator
- 单字符记录终止符。
默认值:
\n
trim
- 布尔值,指定是否从标题名和键值中去掉空格。
默认值:
true
header
- 布尔值,指定存在标题列。如果您使用此参数但不存在标题,解析器使用
col###
为列命名。默认值:
true
omit_empty_keys
- 布尔值,指定解析器如何处理没有值的标头键。如果
omit_empty_keys=true
,则不加载header
行中的空值键。默认值:
false
reject_on_duplicate
- 布尔值,指定是忽略重复记录 (
false
),还是拒绝重复记录 (true
)。在任何一种情况下,都会继续加载。默认值:
false
reject_on_empty_key
- 布尔值,指定是否拒绝包含的键不含值的任何行。
默认值:
false
reject_on_materialized_type_error
- 布尔值,指定针对不能用解析器强制转换为兼容的数据类型的实体化列,是否拒绝该列中的任何行值。请参阅使用 Flex 表解析器。
默认值:
false
treat_empty_val_as_null
- 布尔值,指定空字段变为
NULLs
,而不是变为空字符串 (''
)。默认值:
true
示例
-
为分隔数据创建 Flex 表:
t=> CREATE FLEX TABLE delim_flex (); CREATE TABLE
-
使用
fdelimitedparser
加载些来自STDIN
的分隔数据,并指定逗号 (,
) 列分隔符:=> COPY delim_flex FROM STDIN parser fdelimitedparser (delimiter=','); Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> deviceproduct, severity, deviceversion >> ArcSight, High, 2.4.1 >> \.
您现在可以在 delim_flex
Flex 表中查询虚拟列:
=> SELECT deviceproduct, severity, deviceversion from delim_flex;
deviceproduct | severity | deviceversion
---------------+----------+---------------
ArcSight | High | 2.4.1
(1 row)