1

我们想将表迁移到 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 实例的客户端不透明地更改外部表(这意味着我们无法更改表名)。非常感谢你的帮助!

4

1 回答 1

1

Redshift 没有别名,您最好的选择是创建一个视图。

WITH NO SCHEMA BINDING由于视图位于外部表上,因此您需要在创建视图时使用选项。

如果您不想指定架构名称,或者您有这样的要求,请在公共架构中创建视图或将用户默认架构设置为视图所在的架构

alter user .. set search_path to ..

使用视图访问外部表的其他好处是,您可以

  • 重命名列以更加用户友好
  • 添加或删除具有视图定义的列
  • 更改数据类型和/或日期/时间格式
  • 您将能够在不影响用户访问的情况下更改外部表的名称/结构

让我知道这是否回答了您的问题。

于 2018-09-27T17:55:54.217 回答