使用引号将数据从 S3 加载到 Amazon Redshift

Posted

技术标签:

【中文标题】使用引号将数据从 S3 加载到 Amazon Redshift【英文标题】:Load data into Amazon Redshift from S3 with quotation marks 【发布时间】:2016-04-01 04:14:56 【问题描述】:

如果我的输入文件中的数据在引号内且字段以逗号分隔,我如何从 Amazon S3 加载数据?

示例输入:

 “A”,”ENGLAND”,”West, City Center”,”100”,”200”

我使用了以下查询:

 copy users from 's3://awssampledbuswest2/tickit/allusers_pipe.txt' 
     credentials 'aws_iam_role=>iam-role-arn>' 
     delimiter ',' region 'us-west-2';

"West, City Center"中的值是逗号,所以无法正常加载数据。

如何定义文本限定符来加载这些数据?

【问题讨论】:

【参考方案1】:

使用 Amazon Redshift COPY 命令的 REMOVEQUOTES 参数。

来自documentation:

从传入数据中的字符串中删除周围的引号。引号内的所有字符(包括分隔符)都将保留。如果一个字符串有一个开始的单引号或双引号,但没有相应的结束标记,则 COPY 命令无法加载该行并返回错误。

【讨论】:

以上是关于使用引号将数据从 S3 加载到 Amazon Redshift的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 Amazon S3 复制到 Redshift 并避免重复行

Amazon Data Pipeline“将 S3 数据加载到 RDS MySQL”查询格式?

将数据从 Amazon redshift 卸载到 Amazon s3

Amazon Aurora 1.8 从 S3 加载数据 - 无法实例化 S3 客户端

从多个进程访问 Amazon S3 文件

将数据从 sql server 增量上传到 Amazon Redshift [关闭]