5

对于 Amazon RedShift,通常使用“复制”命令从 S3 加载数据。我想知道命令是否是原子的。例如,是否有可能在某些特殊情况下仅将部分数据文件加载到 RedShift 表中?

4

2 回答 2

9

带有默认选项的 COPY 命令是原子的。如果文件包含可能导致加载失败的无效行,则将回滚 COPY 事务并且不导入数据。

如果您想跳过无效行而不停止事务,您可以对忽略无效行的 COPY 命令使用 MAXERROR 选项。这是忽略多达 100 个无效行的示例。

COPY table_name from 's3://[bucket-name]/[file-path or prefix]' CREDENTIALS 'aws_access_key_id=xxxx;aws_secret_access_key=xxxx' DELIMITER '\t' MAXERROR 100;

如果无效行数超过 MAXERROR error count(100),事务将被回滚。

有关 COPY 命令的详细信息,请参见以下链接。 http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

于 2013-11-21T07:10:07.403 回答
4

您可以在加载数据之前使用标志NOLOAD检查错误。这是一种验证数据格式的更快方法,因为它不会尝试加载任何数据,只需解析它即可。

MAXERROR您可以使用标志定义您愿意容忍多少错误

如果您的数量超过MAXERROR计数,您的加载将失败并且不会添加任何记录。

在此处查看更多信息:http: //docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

于 2013-08-09T15:12:54.053 回答