如何更改 Redshift Spectrum 中的外部表?

Posted

技术标签:

【中文标题】如何更改 Redshift Spectrum 中的外部表?【英文标题】:How to alter external table in Redshift Spectrum? 【发布时间】:2019-04-01 08:59:37 【问题描述】:

我想将数据分区添加到我的外部表中,但收到错误消息:ALTER EXTERNAL TABLE 无法在事务块内运行。

我删除了 BEGIN/END 事务,但同样的错误仍然存​​在。我在一些论坛上读到,添加隔离级别可能会解决问题,但如果有人以前遇到过这种情况,我想获得其他人的意见。

【问题讨论】:

您可能需要将事务提交模式设置为“自动”而不是“手动”。设置这取决于您的连接方式。从命令行使用 psql 是最安全的方法。 如果您可以提供示例代码来重现错误并解释您正在使用的客户端工具和驱动程序,将会有所帮助, @JonScott 您可以从 psql 客户端发布任何代码吗?我正在尝试做同样的事情(例如,我首先使用 unload 将表写入 s3 存储桶)然后尝试对外部表进行分区。当我尝试在 crontab 中使用 psql 客户端执行相同的命令时,我在 SQLworkbenchJ 客户端中使用的常用 alter table 命令给了我一个错误 【参考方案1】:

这样的标准陈述对我有用。如果您也因此遇到错误,请分享您的确切陈述?

ALTER TABLE spectrum_schema.spect_test 
ADD PARTITION (column_part='2019-07-23') 
LOCATION 's3://bucketname/folder1/column_part=2019-07-23/';

【讨论】:

以上是关于如何更改 Redshift Spectrum 中的外部表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Psycopg2 在 Redshift Spectrum 中添加分区 -

如何通过 AWS Quicksight 连接到 Redshift Spectrum 上的外部架构/表?

扫描外部表(S3 数据)时 Redshift Spectrum 中的成本控制

Redshift Spectrum 读取文件的数据格式是啥?

Redshift Spectrum中表名有连字符时如何查询表?

Redshift Spectrum 比 Athena 慢很多?