【发布时间】:2013-08-08 06:34:42
【问题描述】:
对于 Amazon RedShift,通常使用“复制”命令从 S3 加载数据。我想知道命令是否是原子的。例如。是否有可能在某些特殊情况下仅将部分数据文件加载到 RedShift 表中?
【问题讨论】:
标签: amazon-redshift
对于 Amazon RedShift,通常使用“复制”命令从 S3 加载数据。我想知道命令是否是原子的。例如。是否有可能在某些特殊情况下仅将部分数据文件加载到 RedShift 表中?
【问题讨论】:
标签: amazon-redshift
带有默认选项的 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
【讨论】:
您可以使用NOLOAD 的标志在加载数据之前检查错误。这是一种更快的验证数据格式的方法,因为它不会尝试加载任何数据,只需对其进行解析。
您可以使用MAXERROR 标志定义您愿意容忍多少错误
如果您有超过MAXERROR 计数,您的加载将失败并且不会添加任何记录。
在此处查看更多信息:http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html
【讨论】: