Amazon RedShift中的'copy'命令是否原子?

时间:2013-08-08 06:34:42

标签: amazon-redshift

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

2 个答案:

答案 0 :(得分:7)

带有默认选项的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错误计数(100),则事务将被回滚。

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

答案 1 :(得分:3)

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

您可以使用MAXERROR标记

来定义您愿意容忍的错误数量

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

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