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)