可以使用结构化查询语言 (SQL) 访问现有数据集及其属性,并编辑企业级地理数据库中的版本化(传统)和非版本化数据集。
也可以使用 SQL 创建可注册到地理数据库的表。这些表可包含非空间属性和 SQL 空间或栅格类型。
使用 SQL 访问地理数据库时,会在数据库管理系统级别对其进行访问。这意味着使用 SQL 时,不会强制执行由 ArcGIS 强制执行的行为和功能。因此,对地理数据库中的数据执行 SQL 命令时,可以查看数据以及关于数据的信息,但不应更改参与地理数据库行为的任何数据。请参阅可使用 SQL 编辑何种数据类型? 以获取详细信息。
访问数据集属性
可以使用 SQL SELECT 语句获得企业级地理数据库中的现有数据集的属性。
数据集属性存储在地理数据库系统表中。要获得此信息,可查询系统表中的特定列。某些情况下,这些列包含 XML 文档,使用 XPath 表达式查询这些文档可获得属性信息。对于存储在 IBM Db2、PostgreSQL 和 Microsoft SQL Server 数据库中的地理数据库也是如此。对于 Oracle 中的地理数据库,可访问系统视图来读取 CLOB 列中的纯文本。
访问地理数据库数据
可以使用 SQL SELECT 语句从地理数据库的现有数据集中返回数据。如果查询企业级地理数据库中的版本化数据集,则必须使用版本化视图。
版本化视图将数据库视图、存储过程、触发器和函数整合在一起,以用于通过 SQL 读取或编辑地理数据库表或要素类中的版本化数据。通过版本化视图访问版本化数据集时,业务表中的所有记录都被选中并与增量表中的记录合并,以构建包括在指定版本环境中对业务表进行的所有更改的视图。
要使用 SQL 访问和分析简单空间数据,可使用与空间类型一起安装的空间 SQL 函数。每个空间类型都有其自己的函数集。Esri 为其在 Oracle 和 PostgreSQL 中的 ST_Geometry 类型定义了函数,并且每个数据库供应商都为其 SQL 类型定义了函数。这些函数可评估空间关系、执行空间运算,以及返回和设置空间属性。
编辑地理数据库数据
可使用数据库管理系统的原生 SQL 来编辑地理数据库中的简单非空间属性数据。还可以使用与空间类型一起安装的空间 SQL 函数来更改使用 SQL 的简单空间数据。
可以使用 SQL 编辑企业级地理数据库中的版本化和非版本化数据集。但是,如前所述,不应编辑参与地理数据库功能的数据集。
编辑非版本化数据时,必须使用 Esri 提供的功能和 SQL 向 ObjectID、GUID 和全局 ID 字段插入唯一值。
必须使用版本化视图来编辑版本化数据。通过版本化视图进行编辑时,版本化视图使用的触发器将更新增量表。这样可确保在编辑时对增量表进行了插入。版本化视图还会自动向 ObjectID 字段插入唯一值。
创建用于 ArcGIS 的表
可使用数据库管理系统的原生 SQL 来创建和填充表。使用 SQL 创建的空间和非空间表均可用于 ArcMap 和 ArcGIS Pro。也可以直接在 ArcGIS 中查看空间表和非空间表中的属性。如果具有用于站点中的其他系统的表,并希望能够通过 ArcGIS 访问这些表或将这些表连接到自己的地理数据库中的表,则查询图层和直接访问表的功能均十分有用。
如果希望表使用地理数据库功能,可将表注册到地理数据库。但请记注,一旦表使用了地理数据库功能,便无法使用 SQL 编辑它们。
有关说明,请参阅工作流:使用 SQL 创建表并将表注册到地理数据库。