【问题标题】:Redshift - Cannot load query results into table - leader node issueRedshift - 无法将查询结果加载到表中 - 领导节点问题
【发布时间】:2020-04-02 20:26:54
【问题描述】:

我的目标是将查询结果加载到表中,以存储给定表的列名的有序列表。 (然后,我将使用将传递给动态 sql 的 listagg 函数将所有这些列名填充到单个列中。)我无法将其加载到表中的原因是因为系统表查询在领导节点上计算,但此查询不在领导节点上执行,也没有办法强制它在领导节点上执行。任何想法如何让它成功执行?

create table temp_columns
as
select
cast(t1.columnname as varchar) as columname
--,
--cast(t2.ordinal_position as integer) as ordinal_position
FROM 
(

SELECT 

        cast(schemaname as varchar) as schemaname,
        cast(tablename as  varchar) as tablename,
        cast("column" as varchar) as columnname

FROM PG_TABLE_DEF
WHERE 
schemaname = 'schema1'
and tablename = 'table1'
)
t1
 join information_schema.columns t2
    on t1.schemaname = t2.table_schema 
    and t1.tablename = t2.table_name
    and t1.columnname = t2.column_name
WHERE 
t1.schemaname = 'schema1'
and t1.tablename = 'table1'
order by t2.ordinal_position; 

【问题讨论】:

    标签: amazon-redshift


    【解决方案1】:

    我们通过先创建表然后执行 INSERT INTO 来解决这个问题。

    类似:

    create table public.temp_columns
    (
    columname varchar(255),
    ordinal_position int
    );
    
    insert into public.temp_columns
    select
    cast(t1.columnname as varchar) as columname,
    cast(t2.ordinal_position as integer) as ordinal_position
    FROM 
    (
    
    SELECT 
    
            cast(schemaname as varchar) as schemaname,
            cast(tablename as  varchar) as tablename,
            cast("column" as varchar) as columnname
    
    FROM PG_TABLE_DEF
    WHERE 
    schemaname = 'schema1'
    and tablename = 'table1'
    )
    t1
     join information_schema.columns t2
        on t1.schemaname = t2.table_schema 
        and t1.tablename = t2.table_name
        and t1.columnname = t2.column_name
    WHERE 
    t1.schemaname = 'schema1'
    and t1.tablename = 'table1'
    order by t2.ordinal_position;
    

    【讨论】:

    • 谢谢汤姆。我在 redshift 上尝试了您的建议,但仍然收到错误“SQL 错误 [0A000]:错误:Redshift 表不支持指定的类型或函数(每个 INFO 消息一个)。”还有其他建议吗?
    猜你喜欢
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2023-04-04
    • 2018-11-09
    • 2021-11-22
    • 2017-10-07
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多