我可以将数据卸载到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
答案 0 :(得分:1)
AWS Support Center的回复如下: 遗憾的是,您需要在外部处理数据以更改分隔符,或者使用不同的分隔符再次卸载数据。
文档对Specify a single ASCII character for 'delimiter'说。
ASCII范围在八进制中最多只能达到177。
我们将澄清文档,注意177是分隔符的最大允许八进制。我可以确认在雅典娜也是如此。
感谢您提请我们注意。
答案 1 :(得分:0)
您可以尝试使用Spectrify。它通过将红移表移动到频谱来自动化当前涉及的许多肮脏。