创建和管理Schema
Schema又称作模式,从逻辑上组织一个数据库中的对象和数据。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,同时便于将第三方应用添加到相应的Schema下而不引起冲突。
相同的数据库对象名称可以应用在同一数据库的不同Schema中,而没有冲突。例如,a_schema和b_schema都可以包含名为mytable的表。具有所需权限的用户可以访问数据库的多个Schema中的对象。
创建Schema
1
|
CREATE SCHEMA myschema; |
如果需要在模式中创建或者访问对象,其完整的对象名称由模式名称和具体的对象名称组成。中间由符号“.”隔开。例如:myschema.table。
设置Schema搜索路径
GUC参数search_path设置Schema的搜索顺序,参数取值形式为采用逗号分隔的Schema名称列表。如果创建对象时未指定目标Schema,则该对象会被添加到搜索路径中列出的第一个Schema中。当不同Schema中存在同名的对象时,查询对象未指定Schema的情况下,将从搜索路径中包含该对象的第一个Schema中返回对象。
- 使用SHOW命令查看当前搜索路径。
1
SHOW SEARCH_PATH;
search_path参数的默认值为:default_db。DataArtsFabric SQL会自动帮您创建一个默认Schema。
- 使用SET命令修改当前会话的默认Schema。例如,将搜索路径设置为myschema1、myschema2,首先搜索myschema1。
1
SET SEARCH_PATH TO myschema1, myschema2;
使用Schema
在特定Schema下创建对象或者访问特定Schema下的对象,需要使用有Schema修饰的对象名。名称包含Schema名以及对象名,之间用“.”号分开。
- 在myschema下创建mytable表。以schema_name.table_name格式创建表。
1
CREATE TABLE myschema.mytable(id int, name varchar(20)) STORE AS ORC;
- 查询myschema下mytable表的所有数据。
1 2 3 4
SELECT * FROM myschema.mytable; id | name ----+------ (0 rows)
查看Schema
- 使用current_schema函数查看当前Schema:
1 2 3 4 5
SHOW current_schema; current_schema ---------------- (1 row)
- 要查看所有Schema的列表,请执行。
1
SHOW SCHEMAS;
- 要查看某Schema详细信息,请执行。
1
DESCRIBE SCHEMA myschema;
Schema的权限控制
默认情况下,用户只能访问属于自己的Schema中的数据库对象。如需要访问其他Schema的对象,则需赋予对应Schema的usage权限。
当前DataArtsFabric SQL不支持通过SQL执行权限相关操作。您可以通过LakeFormation界面执行权限相关操作,具体操作方法可以参见LakeFormation数据权限概述。
删除Schema
- 使用DROP SCHEMA命令删除一个空的Schema(即该Schema下没有数据库对象)。
1
DROP SCHEMA IF EXISTS myschema;
- 默认情况下,删除一个Schema前,它必须为空。 要删除一个Schema及其包含的所有对象(表、数据、函数等),需要使用CASCADE关键字。
1
DROP SCHEMA myschema CASCADE;