来自 S3 的 AWS Redshift COPY csv
Posted
技术标签:
【中文标题】来自 S3 的 AWS Redshift COPY csv【英文标题】:AWS Redshift COPY csv from S3 【发布时间】:2019-08-01 15:40:22 【问题描述】:在从 S3 加载 CSV 文件时,我对 AWS Redshift COPY 命令有两个疑问。我预计在这两种情况下会出错,但没有出错并且工作正常。因此,请帮助我了解 COPY 命令在这些条件下的工作原理:
-
CSV 中的必填字段为空。
CSV 的列数比 Redshift 多。
【问题讨论】:
“必填字段”是什么意思?您是否使用标记为NOT NULL
的列定义了表?你能告诉我们定义吗?
是的,我的意思是必填字段为 NOT NULL 列。
Loading Default Column Values - Amazon Redshift 说:“如果 COPY 尝试将 NULL 分配给定义为 NOT NULL 的列,则 COPY 命令将失败。”它可能将空列视为空白字符串,而不是 NULL。
【参考方案1】:
COPY 命令在上述情况下的工作:
-
如果列是 VARCHAR 或 CHAR,则该字段将被视为空白(它不是 NULL)并按原样加载该字段。如果我们想将空白视为空,请使用 BLANKSASNULL 参数。
如果表包含的列少于 CSV,COPY 命令将跳过多余的列并从左侧加载。
【讨论】:
以上是关于来自 S3 的 AWS Redshift COPY csv的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL 脚本执行 AWS S3 到 Redshift Copy 命令?
AWS:通过使用 amazon-data-pipeline 将数据从 S3 传输到 Redshift 来实现除 COPY 之外的其他功能