来自 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 之外的其他功能

使用 COPY 将数据上传到 RedShift

尝试加载 Redshift 样本,从 S3 复制时拒绝访问

从充满 CSV 文件的 AWS S3 目录中复制 Redshift

AWS Data Pipeline DynamoDB 到 S3 到 Redshift,包括 JsonPaths