我们想将表迁移到Spectrum,这需要定义一个外部模式
create external schema spectrum
from data catalog
database 'spectrumdb'
iam_role 'my_iam_role'
create external database if not exists;
我在Redshift中创建了一个外部表,如下所示:
create external table spectrum.my_table(
id bigint,
accountId bigint,
state varchar(65535),
) stored as parquet
location 's3://some_bucket/my_table_files';
是否可以对表进行别名处理,以便在查询表时可以将其命名为my_table_alias
而不是spectrum.my_table
?基本上,我们希望使外部表的更改对于Redshift实例的客户端而言是不透明的(这意味着我们无法更改表名)。非常感谢您的帮助!
答案 0 :(得分:1)
Redshift没有别名,您最好的选择是创建一个视图。
由于视图位于外部表上,因此在创建视图时需要使用WITH NO SCHEMA BINDING
选项。
如果您不想指定架构名称,或者有类似要求,请在公共架构中创建视图,或将用户默认架构设置为视图所在的架构
alter user .. set search_path to ..
使用视图访问外部表的其他好处是,您可以
让我知道这是否回答了您的问题。