COPY FROM VERTICA

从其他 Vertica 数据库导入数据。COPY FROM VERTICA 类似于 COPY,但仅支持后者的一部分参数。

语法

COPY [[database.]schema-name.]target-table
    [( target‑columns )]
    FROM VERTICA source‑database.[schema.]source‑table
    [( source‑columns )]
    [STREAM NAME 'stream name']
    [NO COMMIT]

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

目标表
所导入数据的目标表。Vertica 将数据从架构表加载到包含列的全部投影中。
target‑columns
target‑table 中列的逗号分隔列表,用于存储所复制的数据。请参阅下面的目标列和源列之间的映射

您不能将 FILLER 列或复杂类型(原生数组除外)的列用作列定义的一部分。

source‑database
要导入的数据的源数据库。在启动复制操作之前,当前会话中必须已经存在与该数据库的连接;否则 Vertica 将返回错误。有关详细信息,请参阅 CONNECT TO VERTICA
[schema.]source‑table
作为导入数据来源的表。如果 schema 是除 public 以外的任何其他架构,则必须提供架构名称。
source‑columns
源表中要导入的列的逗号分隔列表。如果省略,则导出所有列。列不能属于复杂类型。请参阅下面的目标列和源列之间的映射
STREAM NAME
COPY 加载流标识符。使用流名称有助于快速识别特定加载。您在加载语句中指定的 STREAM NAME 值出现在 LOAD_STREAMS 系统表的 stream 列中。
NO COMMIT
防止 COPY 在完成复制数据时自动提交其事务。有关详细信息,请参阅使用事务暂存加载

特权

  • 源表:选择

  • 源表架构: USAGE

  • 目标表: INSERT

  • 目标表架构: USAGE

目标列和源列之间的映射

将一个数据库中的所有表数据复制到另一个数据库时,如果两个表中的列定义都符合以下条件,COPY FROM VERTICA 可以不用指定列的列表:

  • 列数相同

  • 列名相同

  • 列序列相同

  • 列数据类型匹配或兼容

  • 没有复杂的数据类型(ARRAY、SET 或 ROW),原生数组除外

如果其中任何一个条件不成立,则 COPY FROM VERTICA 语句必须包含列的列表,这些列表将目标列和源列显式映射到彼此,如下所示:

  • 包含相同数量的列。

  • 按相同顺序列出源列和目标列。

  • 将具有相同(或兼容)数据类型的列配对。

执行 COPY 期间出现节点故障

请参阅处理复制/导出期间的节点故障

示例

以下示例将整个表的内容从 vmart 数据库复制到当前数据库中具有相同定义的表中:

=> CONNECT TO VERTICA vmart USER dbadmin PASSWORD 'myPassword' ON 'VertTest01',5433;
CONNECT
=> COPY customer_dimension FROM  VERTICA vmart.customer_dimension;
 Rows Loaded
-------------
      500000
(1 row)
=> DISCONNECT vmart;
DISCONNECT

有关更多示例,请参阅从另一个 Vertica 数据库复制数据

另请参阅

导出到 VERTICA