1

我能够将数据卸载到 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
4

2 回答 2

1

从 AWS 支持中心得到回复:不幸的是,您需要在外部处理数据以更改分隔符或使用不同的分隔符再次卸载数据。

文档说要为 'delimiter' 指定一个 ASCII 字符

ASCII 范围只能达到八进制的 177。

我们将澄清文档以注意 177 是分隔符的最大允许八进制数。我可以确认这在 Athena 中也是一样的。

谢谢你让我们注意到这一点。

于 2018-02-21T14:35:53.153 回答
0

您可以尝试为此使用Spectrify。它自动化了目前将红移表移动到光谱所涉及的许多麻烦。

于 2018-02-22T15:33:39.903 回答