使用事务暂存加载

默认情况下,COPY 会自动提交自身和其他当前事务,加载临时表或查询外部表时除外。您可以通过使用 NO COMMIT 选项限定 COPY 语句来覆盖此行为。当您指定 NO COMMIT 时,Vertica 不会提交事务,直到您明确发出 COMMIT 语句为止。

您可以通过两种方式使用 COPY...NO COMMIT

  • 将多个 COPY 命令作为单个事务执行。

  • 在提交加载之前检查数据是否违反约束。

在同一个事务中合并多个 COPY 语句

当您在同一个事务中合并多个 COPY...NO COMMIT 语句时,Vertica 可以将所有操作的数据合并到更少的 ROS 容器中,从而更高效地执行操作。

例如,以下一组 COPY...NO COMMIT 语句会按顺序执行若干复制语句,然后再全部提交这些数据。这样,所有复制数据都会作为单个事务提交或回退。

COPY... NO COMMIT;
COPY... NO COMMIT;
COPY... NO COMMIT;
COPY X FROM LOCAL NO COMMIT;
COMMIT;

检查约束违规

如果在目标表中未强制执行约束,则 COPY 在加载数据时不会检查是否有约束违规。要对加载数据的约束违规进行故障排除,请使用 COPY...NO COMMITANALYZE_CONSTRAINTS。这样做可以让您在提交加载操作之前检测到约束违规,并在必要时回退操作。有关详细信息,请参阅检测约束违规