用户定义的加载 (UDL)

COPY 提供了用于控制如何加载数据的大量选项和设置。但是,您可能发现这些选项不适合您要执行的数据加载类型。使用用户定义的加载 (UDL) 功能,您可以开发一个或多个用于更改 COPY 语句的工作方式的函数。您可以使用 Vertica SDK 来创建用于处理加载过程中的各个步骤的自定义库。。

您可以在开发期间使用以下三种类型的 UDL 函数,每种类型适用于数据加载过程的每个阶段:

  • 用户自定义的源 (UDSource):控制 COPY 如何获取要加载到数据库中的数据。例如,COPY 获取数据的方法可能是通过 HTTP 或 cURL 提取数据。最多只能有一个 UDSource 从文件或输入流读取数据。UDSource 可以从多个源读取数据,但 COPY 只能调用一个 UDSource。

    API 支持:C++、Java。

  • 用户自定义的筛选器 (UDFilter):预处理数据。例如,过滤器可以解压缩文件或将 UTF-16 转换为 UTF-8。可以将多个用户定义的筛选器链接到一起,例如,先解压缩再转换。

    API 支持:C++、Java、Python。

  • 用户自定义的解析器 (UDParser):最多只能有一个解析器将数据解析为可供插入到表中的元组。例如,解析器可以从类似于 XML 的格式提取数据。您可以选择定义用户定义的块分割器(UDChunker,仅限 C++),以让解析器执行并行解析。

    API 支持:C++、Java、Python。

完成最后一步之后,COPY 会将数据插入到表中,或者在格式不正确时拒绝该数据。