【问题标题】:Unable to UNLOAD the information schema from Redshift to S3无法将信息架构从 Redshift 卸载到 S3
【发布时间】:2021-08-04 23:36:48
【问题描述】:

有没有办法将信息架构从 Redshift 卸载到 S3? 尝试卸载信息架构时出现以下错误

错误:Redshift 表不支持指定的类型或函数(每条 INFO 消息一个)。

以下是我用于卸载的查询:

UNLOAD ('select table_schema,
      table_name
from information_schema.tables
where table_schema not in (\'information_schema\', \'pg_catalog\')
     and table_type = \'BASE TABLE\'
order by table_schema,
        table_name;')
TO 's3://xxx/'
iam_role 'arn:aws:iam::xxx';

【问题讨论】:

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


    【解决方案1】:

    当需要将仅领导节点的数据发送到计算节点并且在查询期间没有数据在该方向流动的路径时,通常会生成此错误消息。当您尝试将某些系统表与用户数据连接时,通常会发生这种情况。现在我从来没有像你这样产生过这个错误,但预计会发生这种情况,因为 UNLOAD 通过所有计算节点并行工作。

    如果您将 UNLOAD 更改为 PARALLEL OFF,这可能会起作用,这将通过领导节点将数据写入 S3。由于数据不必去计算节点,它可以让你克服这个错误。

    如果没有,有办法将这些系统表中的数据选择到游标中,然后将游标读入临时表中。然后你可以卸载临时表。如果需要,我可以为您指明执行此操作的流程。

    【讨论】:

    • 这很有趣(PARALLEL OFF 写入仅来自领导节点)。谢谢!
    • 请记住,这也可能是一种反模式。流经领导节点的卸载数据过多会显着影响领导节点的性能并削弱其其他重要功能(查询编译和结果交付)。
    • 我更多地考虑处理仅领导节点数据类型的情况。事实上,你不能招募工作节点,所以你不会失去原本拥有的性能,但是对于你不能使用 UNLOAD 或 INSERT 的系统表,并且实际上必须有一个外部实体问题SELECT,捕获行,并发出 INSERT,从表面上看,这将解决该问题。话虽如此,我想知道 COPY 会为 ACLitem [] 发出什么。大概是字符串表示(这是 SELECTT 接收的。)
    • COPY 总是将数据读入计算节点并且不支持非计算节点数据类型。每当计算节点上需要仅领导者表数据时,就会产生此错误,即使支持数据类型也是如此。如果您需要从这些表中插入,则需要卸载并复制 OR select 到游标中,然后将游标读入另一个表中。
    • 抱歉 - 这是一个语法错误。当我打算写UNLOAD时,我写了COPY
    猜你喜欢
    • 2014-03-12
    • 2020-02-11
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多