我使用红移光谱查询 S3 数据,但遇到保留字冲突问题

Posted

技术标签:

【中文标题】我使用红移光谱查询 S3 数据,但遇到保留字冲突问题【英文标题】:I used redshift spectrum to query S3 data, but I am having a reserved word conflict problem 【发布时间】:2021-10-13 16:02:05 【问题描述】:

我尝试使用红移光谱查询 S3 数据。

该表有一个oid 列,该表是使用胶水爬虫创建的。

我尝试在 redshift 中使用此命令获取数据。

select * from db.table order by pid desc limit 1

但出现错误。

[XX000] ERROR: Failed to incorporate external table "db"."table" into local catalog. Error=column name "oid" conflicts with a system column name

很难更改文件。有没有办法在不更改文件的情况下解决这个问题?

【问题讨论】:

【参考方案1】:

有趣。如果这是一个普通表,则必须将用作列名的保留字双引号。这如何扩展到外部表可能很有趣。有没有

select "pid", "oid" from db.table order by pid desc limit 1;

工作?

我认为 Redshift 可能会将 * 扩展到列名中,然后再将它们传递给频谱引擎。 (或者它可能是其他东西。)如果这可行,它建议扩展列并引用保留字列名作为解决方法。

【讨论】:

感谢您的回答。我试过了,但还是显示了同样的错误信息。 最佳猜测,但没有奏效。在这一点上,我会就“在 Spectrum 中转义保留字列名”联系 AWS 支持。我担心可能没有解决方案,但他们会知道。

以上是关于我使用红移光谱查询 S3 数据,但遇到保留字冲突问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在红移光谱表中加载正确的数据?

如何在红移光谱中创建一个外部表,其中文件位置每天都会改变?

使用胶水数据目录中定义的外部表红移光谱

我可以直接查询以镶木地板格式存储在 s3 中的数据的红移表吗

无法在红移光谱外部模式中创建视图

红移光谱:如何仅导入某些文件