FDELIMITEDPARSER

使用分隔符分隔值,从而解析数据。fdelimitedparser 加载分隔数据,将其存储在单值 VMap 中。

该解析器仅可用于 Flex 表。所有 Flex 解析器均会将数据作为单个 VMap 存储在 LONG VARBINAR_raw__ 列中。如果某个数据行过大而无法适应该列,该数据行将被拒绝。Vertica 在加载带 NULL 指定列的数据时支持 NULL 值。

语法

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

示例

  1. 为分隔数据创建 Flex 表:

    t=> CREATE FLEX TABLE delim_flex ();
    CREATE TABLE
    
  2. 使用 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)

另请参阅