数据加载操作 - Amazon Redshift

数据加载操作

通过指定以下参数来管理加载操作的默认行为,以进行故障排除或缩短加载时间。

参数
COMPROWS numrows

指定要用作压缩分析的样本大小的行数。将对来自每个数据切片的行运行分析。例如,如果指定 COMPROWS 1000000 (1000000) 且系统总共包含 4 个切片,则将为每个切片读取和分析的行数不超过 250000。

如果未指定 COMPROWS,则每个切片的样本大小默认为 100000。小于每个切片 100000 行这一默认值的 COMPROWS 值将自动升级到此默认值。但是,如果加载的数据量不足以生成有意义的样本,则不会执行自动压缩。

如果 COMPROWS 数量大于输入文件中的行数,则 COPY 命令仍将继续并对所有可用行运行压缩分析。此参数接受的范围介于 1000 到 2147483647 (2,147,483,647) 之间。

COMPUPDATE [ PRESET | { ON | TRUE } | { OFF | FALSE } ]

控制是否在 COPY 期间自动应用压缩编码。

如果 COMPUPDATE 为 PRESET,则在目标表为空时,COPY 命令会为每个列选择压缩编码,即使列已经有除 RAW 之外的编码也不例外。可以替换当前指定的列编码。每个列的编码基于列数据类型。不会对数据进行采样。Amazon Redshift 自动分配压缩编码,如下所示:

  • 为定义为排序键的列分配 RAW 压缩。

  • 为定义为 BOOLEAN、REAL 或 DOUBLE PRECISION 数据类型的列分配 RAW 压缩。

  • 定义为 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIMESTAMP 或 TIMESTAMPTZ 的列分配了 AZ64 压缩。

  • 定义为 CHAR 或 VARCHAR 的列分配了 LZO 压缩。

如果省略了 COMPUPDATE,只有在目标表为空并且您没有为任何列指定编码(而非 RAW)时,COPY 命令才会为每个列选择压缩编码。每个列的编码是由 Amazon Redshift 确定的。不会对数据进行采样。

如果 COMPUPDATE 为 ON(或 TRUE)或者指定 COMPUPDATE 而没有提供选项,在表为空时,COPY 命令将应用自动压缩,即使表列已具有除 RAW 以外的编码。可以替换当前指定的列编码。每个列的编码基于样本数据分析。有关更多信息,请参阅 使用自动压缩加载表

在 COMPUPDATE 为 OFF(或 FALSE)时,将禁用自动压缩。不会更改列编码。

有关分析压缩的系统表的信息,请参阅 STL_ANALYZE_COMPRESSION

IGNOREALLERRORS

您可以指定此选项来忽略加载操作期间出现的所有错误。

如果您指定了 MAXERROR 选项,则无法指定 IGNOREALLERRORS 选项。不能为列式格式(包括 ORC 和 Parquet)指定 IGNOREALLERRORS 选项。

MAXERROR [AS] error_count

如果加载操作返回 error_count 数量的错误或更多错误,加载将失败。如果加载操作返回较少的错误,则将继续并返回指示无法加载的行数的 INFO 消息。使用此参数可允许加载操作在某些行因为格式设置错误或数据中的其他不一致性而未能加载到表中时继续。

如果您希望加载操作在出现第一个错误时就失败,请将此值设置为 01。AS 关键字是可选的。MAXERROR 默认值为 0,限制值为 100000

由于 Amazon Redshift 的并行处理特性,报告的实际错误数量可能高出指定的 MAXERROR。如果 Amazon Redshift 集群中的任何节点检测到已超出 MAXERROR,则每个节点将报告它遇到的所有错误。

NOLOAD

检查数据文件的有效性,而不用实际加载数据。通过使用 NOLOAD 参数,可以在运行实际数据加载之前,确保数据文件加载而不产生任何错误。将 COPY 与 NOLOAD 参数结合运行将比加载数据要快很多,因为前者仅分析文件。

STATUPDATE [ { ON | TRUE } | { OFF | FALSE } ]

在成功的 COPY 命令结束时,控制对优化器统计数据的自动计算和刷新。默认情况下,如果未使用 STATUPDATE 参数,则将在表最初为空时自动更新统计数据。

将数据插入非空表中将明显更改表的大小,我们建议通过运行 ANALYZE 命令或使用 STATUPDATE ON 参数来更新统计数据。

使用 STATUPDATE ON(或 TRUE),不管表最初是否为空,都将自动更新统计数据。如果使用 STATUPDATE,则当前用户必须是表所有者或超级用户。如果未指定 STATUPDATE,则仅需要 INSERT 权限。

通过使用 STATUPDATE OFF(或 FALSE),将从不更新统计数据。

有关更多信息,请参阅分析表