任务 3:创建 schema - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

任务 3:创建 schema

创建新数据库后,您可以在当前数据库中创建新 schema。schema 是包含命名数据库对象(例如表、视图和用户定义的函数 (UDF))的命名空间。一个数据库可以包含一个或多个 schema,每个 schema 只属于一个数据库。两个 schema 可以具有共享相同名称的不同对象。

您可以在同一数据库中创建多个 schema,以便按照所需的方式组织数据,或对数据进行功能分组。例如,您可以创建一个 schema 来存储所有暂存数据,并创建另一个 schema 来存储所有报告表。您还可以创建不同的 schema 来存储与同一数据库中的不同业务组相关的数据。每个 schema 都可以存储不同的数据库对象,例如表、视图和用户定义的函数 (UDF)。此外,您还可以使用 AUTHORIZATION 子句创建 schema。此子句授予指定的用户所有权,或者设置指定的 schema 可以使用的最大磁盘空间量的配额。

Amazon Redshift 会为每个新的数据库自动创建一个名为 public 的架构。如果在创建数据库对象时未指定 schema 名称,则这些对象会进入 public schema。

要访问 schema 中的对象,请使用 schema_name.table_name 表示法限定对象名称。schema 的限定名称由以点分隔的 schema 名称和表名称组成。例如,您可能具有一个包含 price 表的 sales 模式,以及一个同样包含 price 表的 inventory schema。当您引用 price 表时,您必须将其限定为 sales.price 或者 inventory.price

以下示例为用户 GUEST 创建了一个名为 SALES 的 schema。

CREATE SCHEMA SALES AUTHORIZATION GUEST;

有关更多命令选项的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 CREATE SCHEMA

要查看数据库中的 schema 列表,请运行以下命令。

select * from pg_namespace;

该输出值应该类似于以下内容。

nspname | nspowner | nspacl ----------------------+----------+-------------------------- sales | 100 | pg_toast | 1 | pg_internal | 1 | catalog_history | 1 | pg_temp_1 | 1 | pg_catalog | 1 | {rdsdb=UC/rdsdb,=U/rdsdb} public | 1 | {rdsdb=UC/rdsdb,=U/rdsdb} information_schema | 1 | {rdsdb=UC/rdsdb,=U/rdsdb}

有关如何查询目录表的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的查询目录表

使用 GRANT 语句为用户授予 schema 的权限。

以下示例授予 GUEST 用户使用 SELECT 语句从 SALESCHEMA 中的所有标或视图中选择数据的权限。

GRANT SELECT ON ALL TABLES IN SCHEMA SALES TO GUEST;

以下示例一次性授予 GUEST 用户所有可用的权限。

GRANT ALL ON SCHEMA SALES TO GUEST;