在选择查询AWS Redshift谱时从S3检索NULL值

时间:2018-02-19 02:51:37

标签: amazon-web-services amazon-s3 amazon-redshift-spectrum

我可以将数据卸载到S3,并使用Spectrum查询结果,但不能在使用下面定义的分隔符时查询。这是我们的标准分隔符,适用于今天与Redshift COPY和UNLOAD命令相关的所有处理,所以我相信UNLOAD工作正常。但是在表定义和用于检索数据的SQL查询之间,这是行不通的。我们只收到所有领域的NULLS。您能否看一下下面的示例,以确定后续步骤。

unload ('select * from db.test')
to 's3://awsbucketname/ap_cards/'
iam_role 'arn:aws:iam::123456789101:role/redshiftaccess'
delimiter '\325'
manifest;

CREATE EXTERNAL TABLE db_spectrum.test (
cost_center varchar(100) ,
fleet_service_flag varchar(1)
)
row format delimited
fields terminated by '\325'
stored as textfile
location 's3://awsbucketname/test/';

select * from db_spectrum.test

2 个答案:

答案 0 :(得分:1)

AWS Support Center的回复如下: 遗憾的是,您需要在外部处理数据以更改分隔符,或者使用不同的分隔符再次卸载数据。

文档对Specify a single ASCII character for 'delimiter'说。

ASCII范围在八进制中最多只能达到177。

我们将澄清文档,注意177是分隔符的最大允许八进制。我可以确认在雅典娜也是如此。

感谢您提请我们注意。

答案 1 :(得分:0)

您可以尝试使用Spectrify。它通过将红移表移动到频谱来自动化当前涉及的许多肮脏。