Amazon web services 使用红移或DBT中的'pg_table_def'数据创建表
为了从pg_table_def中的所有数据创建一个对我的用户可见的表,我尝试了: 创建表adhoc_schema.pg_table_dump as 挑选* 从pg_表_def ; 但它抛出了一个错误: 列架构名具有不受支持的类型名Amazon web services 使用红移或DBT中的'pg_table_def'数据创建表,amazon-web-services,amazon-redshift,dbt,Amazon Web Services,Amazon Redshift,Dbt,为了从pg_table_def中的所有数据创建一个对我的用户可见的表,我尝试了: 创建表adhoc_schema.pg_table_dump as 挑选* 从pg_表_def ; 但它抛出了一个错误: 列架构名具有不受支持的类型名 从pg_table_def或information_schema.columns创建表的任何方法?pg_table_def是一个leader node系统表,用户表中不支持某些其他数据类型。您需要先转换为文本 但是,这仍然不起作用,因为pg_table_def是一个l
从pg_table_def或information_schema.columns创建表的任何方法?pg_table_def是一个leader node系统表,用户表中不支持某些其他数据类型。您需要先转换为文本
但是,这仍然不起作用,因为pg_table_def是一个leader节点表,而您正在创建的表是存储在计算节点上的用户表。您需要从存储在计算节点上的表中提取源信息。由于我不知道您要从pg_table_def中查找什么信息,我无法确切说出您需要哪些信息,但您可以从stv_tbl_perm开始,并加入pg_类和其他表,因为需要更多信息。从另一个线程中找到此信息,这似乎会有所帮助 Amazon考虑了INFORMATION_SCHEMA.COLUMNS正在使用的内部函数,这些函数只使用Leader Node函数。亚马逊并没有明智地重新定义标准化的INFORMATION_SCHEMA.COLUMNS,而是试图定义自己的专有版本。为此,他们提供了另一个功能PG_TABLE_DEF,似乎可以满足同样的需求。请注意中心关于将模式添加到搜索路径的注释 存储有关表列的信息 PG_TABLE_DEF仅返回用户可见的表的相关信息。如果PG_TABLE_DEF未返回预期结果,请验证search_path参数设置是否正确,以包括相关架构 您可以使用SVV_TABLE_INFO查看有关表的更全面的信息,包括数据分布偏差、键分布偏差、表大小和统计信息 因此,为了清晰起见,请使用重写为“不存在”的示例代码
SET SEARCH_PATH to '$user', 'public', 'target_schema';
SELECT "column"
FROM dev.fields f
WHERE NOT EXISTS (
SELECT 1
FROM PG_TABLE_DEF pgtd
WHERE pgtd.column = f.field
AND schemaname = 'target_schema'
);
另见
关于查询红移系统表的正式文档:如果这是来自另一个线程,请确保提供该线程的链接/引用。