数据源支持指定Schema
功能说明
在PostGIS、KingBase等数据库中,Schema(模式)是一种重要的数据库对象组织方式,用于对数据库对象(如表、视图、函数)进行逻辑分组,从而实现多用户环境下的权限分离和数据管理。
SuperMap iDesktopX 2025 Update1 版本开始,在数据源连接信息中增加了 Schema 参数,以满足以下多种使用场景:
- 安全合规部署:数据源(超图sm系统表)与PostGIS扩展可分离存储,避免在公共Schema(如public)中创建用户表,满足企业严格的安全要求。
- 多平台数据隔离:允许超图数据源创建并管理多个独立Schema下的数据,实现多平台共享数据库时使用Schema保证操作隔离与权限控制。
- 迁移与分级存储:允许将数据直接写入指定的Schema中,实现数据的逻辑分级管理,在数据迁移中,可保留原始库的组织结构。
适用数据库:PostGIS、POLARDBGanos、KingBase、HighGoDB、SHENTONG、Vastbase。
打开数据源设置Schema
设置说明
支持在打开数据源时指定 Schema :
- 若指定 Schema,则新增数据集(创建数据集、导入数据集、复制数据集)将存储在指定的 Schema。
- 若未指定,则默认使用数据源所在的 Schema。
权限说明
数据源打开后,将显示用户具有读取或编辑权限的所有 Schema 下的数据集。数据集的实际权限取决于连接用户对相应 Schema 及数据的读写权限,与打开数据源时指定的 Schema 无关。详细权限管理请参见数据集权限管理。
名称显示规则
- 数据源别名格式为:服务器地址_数据库名称_Schema名称。
- 数据集名称显示为 schema.datasetname 的形式命名(例如:region.sichuan)。连接符号可在 SuperMap.xml 中通过 SchemaJoin 设置为下划线(如 region_sichuan),具体设置请参考引擎相关设置。

若输入的 Schema 不存在或名称错误,数据源仍可正常打开,系统不会在打开时校验 Schema 名称。但在执行写入操作(如创建数据集、导入数据集)时会提示失败。
新建数据源设置Schema
设置说明
支持在新建数据源时指定 Schema,可以让数据源与 PostGIS 扩展存储于不同的 Schema 下,当您在创建数据源时,系统会根据 PostGIS 扩展的创建位置、用户对 Schema 的操作权限、用户设置的 Schema 参数,自动判断数据源创建到的 Schema。
- PostGIS 扩展已创建:
- 当前用户对 PostGIS 扩展所在的 Schema 有 CREATE 权限,则数据源创建在 PostGIS 扩展所在的 Schema,以兼容旧版本。
- 当前用户对 PostGIS 扩展所在的schema没有 CREATE 权限,仅有 USAGE 权限,则数据源创建在 SDX Schema下。
- PostGIS扩展未创建:(这种情况下,您需要使用超级用户创建数据源)
- 当前用户在数据源连接信息中指定了 Schema,则数据源创建在指定 Schema 下。
- 当前用户在数据源连接信息中未指定 Schema,则数据源创建在 Public 下。
您可以在数据库端通过以下 SQL,确认 PostGIS 扩展所在的 Schema、 当前用户对 Schema 的操作权限。
//查询PostGIS扩展所在的Schema
SELECT n.nspname AS schema_name, e.extname AS extension_name
FROM pg_extension e
JOIN pg_namespace n ON e.extnamespace = n.oid
WHERE e.extname = 'postgis';
结果说明:
若返回记录(如 Public),则扩展安装在此Schema下。
若无返回,表示未安装PostGIS扩展。
//查询当前用户对Schema的操作权限
SELECT
nspname AS schema_name,
has_schema_privilege('用户名', nspname, 'CREATE') AS can_create,
has_schema_privilege('用户名', nspname, 'USAGE') AS can_use
FROM pg_namespace
WHERE nspname != 'schema名';
结果说明:
返回记录中[V]表示此操作有权限,[ ]表示此操作无权限。
上下版本兼容说明
功能 | 老版本使用新版本创建的数据源 | 新版本使用老版本 | |
/ | PostGIS扩展和数据源不在一个Schema(且数据源的Schema的名称为sdx) | PostGIS扩展和系统数据源在一个Schema | PostGIS扩展和系统数据源在一个Schema |
数据源打开 | 采用原始PostGIS数据源直连打开,没有读取系统表,识别不了栅格、网络、模型数据集。 | 正常使用 | 无兼容性问题 |
数据集创建、删除等依赖系统表的功能 | 无法正常使用 | 正常使用 | 无兼容性问题 |
数据编辑 | 采用原始PostGIS数据源打开编辑,比如CAD编辑过后系统表未更新,新版本打开四至范围、记录数维护有问题。系统表数据一致性会遭到破坏。 | 正常使用 | 无兼容性问题 |
数据源创建 | 识别已有sdx数据源不会再去创建 | 正常使用 | 无兼容性问题 |
PostgreSQL打开PostGIS 数据源 | 可以打开,数据集无法显示。 | 正常使用 | 无兼容性问题 |
相关主题