在AWS Athena中,您可以编写
SHOW CREATE TABLE my_table_name;
,然后看到类似SQL的查询,该查询描述了如何构建表的架构。 它适用于在AWS Glue中定义了架构的表。对于在常规RDBMS中创建表,加载和浏览数据视图非常有用。
以这种方式与Athena交互是手动的,我想自动化创建具有与Redshift Spectrum中相同模式的常规RDBMS表的过程。
如何通过可通过psql
运行的查询来做到这一点?还是有另一种方法可以通过aws-cli
来做到这一点?
答案 0 :(得分:1)
Redshift Spectrum 不不支持SHOW CREATE TABLE
语法,但是有些系统表可以传递相同的信息。我不得不说,它不如雅典娜返回的准备使用 sql有用。
表是
svv_external_schemas
-为您提供有关胶水数据库映射和与其绑定的IAM角色的信息svv_external_tables
-为您提供位置信息,以及使用的数据格式和Serdes svv_external_columns
-为您提供列名称,类型和订单信息。使用这些数据,您可以重建表格的DDL。
例如,可以使用CREATE TABLE
格式获取列及其类型的列表:
select distinct
listagg(columnname || ' ' || external_type, ',\n')
within group ( order by columnnum ) over ()
from svv_external_columns
where tablename = '<YOUR_TABLE_NAME>'
and schemaname = '<YOUR_SCHEM_NAME>'
查询提供的输出类似于:
col1 int,
col2 string,
...
*)我使用的是listagg
窗口函数,而不是聚合函数,因为显然listagg
聚合函数只能与用户定义的表一起使用。笨蛋