为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:centos7
【CPU】:
【问题描述】*:在同一个用户下建了很多schema,怎么样实现跨这些schema查询啊?
推荐使用SQLark工具,支持通过可视化方式快速切换当前窗口所属的数据库连接和模式,然后在对应的查询窗口执行即可(下载地址:www.sqlark.com)
加上需要查询的那个表的模式名就可以了。
可以直接用select * from 模式名.表名 查询;
如果嫌麻烦,可以使用set schema 模式名 进行当前模式切换,查询就不需要加模式名了。
查询的时候带上模式名即可,select * from 模式名.表名,也可创建对应的同义词
跨schema查询是完全支持的。默认情况下,使用 schema_name.object_name 的形式可以访问其他模式中的对象,例如表或视图。但需要注意访问权限的要求:
GRANT SELECT ON A.TEST1 TO B;
此命令授予 B 对 A.TEST1 的查询权限。
如果希望所有用户都能访问,可以授予PUBLIC角色
GRANT SELECT ON A.TEST1 TO PUBLIC;
当然如果频繁访问,可以创建同义词来简化查询,不必每次都使用 schema_name.object_name
在B下创建同义词:
CREATE SYNONYM TEST1_A FOR A.TEST1;
然后可以在B直接查询:
SELECT * FROM TEST1_A ;
首先要有查询对应模式下表等对象的权限,其次就是加上对应的模式名称来查询,比如select * from xxxx.xxxx;
查询的时候带上模式如,如select * from AA.TABLE_1;
select * from BB.TABLE_2;