您可以从 ArcGIS 客户端进行连接并使用此处列出的数据库管理系统或数据仓库应用程序中的数据。使用 ArcGIS 中的数据库时要查看可用功能描述,请参阅数据库和 ArcGIS。
数据库管理系统之间的区别在于实施方式和所提供的功能不同。因此,使用 ArcGIS 中的每个数据库类型有时需要了解其说明或规则。这些将在以下各节中列出。
ALTIBASE
空间数据以 ALTIBASE 几何类型存储在 ALTIBASE 中。默认情况下,ALTIBASE 中存在几何类型,但是要将其与 ArcGIS 一起使用,必须创建两个系统表来存储几何和空间参考信息。请注意,ALTIBASE 几何类型仅支持 x 和 y 坐标。
DAMENG
空间数据存储在 Dameng 几何类型中。Dameng 典型安装包括空间类型;但是,您必须对其进行初始化以使用。
IBM DB2
DB2 使用操作系统登录验证数据库连接。但是,从数据库连接对话框或创建数据库连接地理处理工具连接 DB2 时,可指定数据库身份验证选项。可保存登录的特定用户名和密码,注册与 ArcGIS for Server 之间的数据库连接时将会用到。
ArcGIS 需要唯一的标识字段以渲染地图中的要素。创建新要素时,ArcGIS 依靠数据库向唯一的标识字段插入值。由于 DB2 z/OS 不具备用于向 ID 字段填充值的数据类型或内置机制,DB2 z/OS 中的数据库无法使用在数据库表中创建新行的 ArcGIS 工具。此外,由于您无法将要素插入到 ArcGIS 的 DB2 z / OS 表中,因此您不能发布包含 DB2 z / OS 数据库中数据的要素服务。
如果您需要同时编辑附件、存档、拓扑、地理数据库版本这些功能、复制数据,或您想发布包含 DB2 z / OS 中数据的要素服务,您可以启用 DB2 数据库中的地理数据库。
IBM Informix
Informix 使用操作系统登录验证数据库连接。但是,从数据库连接对话框或创建数据库连接地理处理工具连接 Informix 时,可指定数据库身份验证选项。可保存登录的特定用户名和密码,注册与 ArcGIS for Server 之间的数据库连接时将会用到。
如果您需要同时编辑附件、存档、拓扑、地理数据库版本这些功能或复制数据,您可以启用 Informix 数据库中的地理数据库。
Microsoft Azure SQL 数据库
Microsoft Azure SQL Database 是一个基于云的数据库服务。要在 ArcGIS 中使用 Azure SQL Database,请在 ArcGIS 客户端计算机上安装受支持的 Microsoft ODBC driver for SQL Server。
使用 ArcGIS 中的 Azure SQL 数据库时应谨记以下信息:
- 如果可以,应在 Microsoft Azure 上运行 ArcGIS 客户端,并使用与 Azure SQL 数据库相同的位置(区域)以便获得更好的性能。
- 由于 Azure SQL 数据库和 SQL Server 执行十分相似,数据库连接对话框或创建数据库连接地理处理工具中没有单独的 Azure SQL 数据库。连接 Azure SQL 数据库时指定 SQL Server,并且遵从从 ArcGIS 向 SQL Server 创建连接的说明。
- 您必须在数据库连接对话框中输入数据库名称。不能从下拉列表中选择数据库,也不能将数据库文本框留空。
- 向要素类中加载大量数据(几百万条记录或者更多)时,应该先估计数据的空间 (x,y) 范围,针对要素类创建合适的空间索引,然后再加载数据。如果 Microsoft Azure 确定对包含数百万条记录的要素类创建空间索引会占用过多服务器资源,则会终止此操作。这会使您的要素类不具有空间索引。因此,Esri 建议您首先创建一个合适的空间索引,然后再加载数据。
请参阅 ArcGIS 10.4.1 支持的 Azure SQL 数据库版本。
ArcGIS 外的 Azure SQL 数据库
有些任务独立于 ArcGIS 而直接在数据库管理系统中执行。如果您非常熟悉 SQL Server 的使用,那么要转而使用 Azure SQL 数据库时,应该注意到其中的一些差别。有关差异的详细信息,请参阅 Microsoft TechNet 文章 - 比较 SQL Server 和 Azure SQL 数据库。此外,由于 Azure SQL Database 是一项多租户数据库服务,某些特定环境下会通过关闭连接来释放资源,以供其他用户使用。有关可能引起连接关闭的情况的列表,请参阅 Microsoft Azure 文档中的 Azure SQL Database 资源管理。
Microsoft SQL Server
虽然 Microsoft 允许 SQL Server 用户帐户将数据写入任何名称的方案,ArcGIS 要求在数据库中创建表、视图或其他对象的用户帐户拥有相同用户名和方案名。例如,您不能从 ArcGIS 连接为 elmer 并写入名为 dataowner 的方案。
如果您需要同时编辑附件、存档、拓扑、地理数据库版本这些功能或复制数据,您可以启用 SQL Server 数据库中的地理数据库。
Netezza Data Warehouse Appliance
数据仓库通常存储大量数据。要使用 ArcGIS 以查看、执行分析或发布 Netezza Data Warehouse Appliance 数据,请使用数据子集。操作方式取决于您使用数据的目的。
- 如果要向 ArcMap 中添加数据以在地图中进行查看和分析,则添加查询图层并定义仅返回数据子集的查询图层表达式。
- 如果要向 ArcMap 中添加数据以发布地图服务,则定义仅包含数据子集的数据库视图。数据库视图存储在数据库中。可使用创建数据库视图地理处理工具或 SQL 客户端来定义视图。
- 如果要向 ArcMap 添加数据以发布要素服务,请在向地图添加数据前取消选中此选项以默认将新添加的图层设置为可见。接下来,打开图层属性并使用 SQL 创建用于定义数据子集的定义查询。限制 ArcMap 中将显示的数据量后,将图层设为可见并准备地图以供发布。
ArcGIS 针对使用 Netezza Data Warehouse Appliance 有两项特定的限制:
- 如果使用传统 Netezza 空间类型,则表中所有空间列必须命名为 shape 或使用别名 shape。
传统空间类型使用 VARCHAR 数据类型;因此,shape 列名称或别名是 ArcGIS 确定该列存储空间数据而非文本的途径。如果该表中的空间列有不同的名称,则需在表中创建一个视图并将该空间列名称的别名设为 shape。
- ArcGIS 需要唯一的标识字段以渲染地图中的要素。ArcMap 在您将空间表添加到地图时会提示您指定此唯一 ID 字段。
ArcGIS 工具不会将新值插入到数据库中的唯一 ID 字段中;而是依赖于数据库向字段插入值。由于 Netezza 不具备用于向 ID 字段填充值的数据类型或内置机制,Netezza 无法使用在数据库表中创建新行的 ArcGIS 工具。此外,由于您无法将要素插入到 ArcGIS 的 Netezza 表中,因此您不能发布包含 Netezza Data Warehouse Appliance 中数据的要素服务。
其他限制与 Netezza 本身相关。
- 由于 Netezza 空间包使用不同数据类型,您所使用的空间包将影响到配置 Netezza ODBC 驱动程序以从客户端应用程序连接到 Netezza 的方法。
- 作为 Netezza 用户,我们知道 Netezza 空间存储的是简单数据。因此,您无法将非简单数据从地理数据库或其他数据库粘贴至 Netezza 中。
- 作为 Netezza 用户,您还了解行的总大小被限制为 65,535 字节。为帮助您计算行大小,下表显示了 ArcGIS 在 Netezza 中创建的 Netezza 数据类型以及这些数据类型使用的磁盘空间量:
ArcGIS 字段类型 | 所创建的 Netezza 数据类型 | 磁盘空间使用 |
---|---|---|
日期 | timestamp | 8 字节 |
DOUBLE | numeric(p,s) 默认情况下,p(精度)= 38 且 s(比例)= 8。 | 精度小于等于 9 = 4 字节 精度为 10-18 = 8 字节 精度为 19-38 = 16 字节 |
FLOAT | 如果指定的精度小于等于 6,将创建 numeric(p,s)。如果指定的精度为 7-15,将创建双精度。 | 数字 = 4 字节 双精度 = 8 字节 |
GEOMETRY | 如果使用传统 Netezza Spatial Package,将会创建一个可变长度字符(最多为 64,000)列。 如果使用 Netezza Spatial Esri Package,将会创建 ST_Geometry 列。 | 对于传统 Netezza Spatial Package
对于 Netezza Spatial Esri Package
|
GUID | 固定长度字符 (38) | 40 字节 |
LONG INTEGER | 如果比例大于 0,将创建 numeric(p,s)。如果比例为 0,将创建整数。 | 整数 = 4 字节 numeric 的精度小于等于 9 = 4 字节 数值精度为 10-18 = 8 字节 数值精度为 19–38 = 16 字节 |
OBJECTID | integer | 4 字节 |
SHORT INTEGER | smallint | 2 字节 |
TEXT | 可变长度,Unicode(p) 其中 P 表示针对 TEXT 字段指定的字段长度。默认值为 50。 | p x 4 = 使用的字节数量 |
Oracle
ArcGIS 支持 Oracle 数据库中的 Oracle SDO_Geometry 和 Esri ST_Geometry 空间类型。SDO_Geometry 是单独的第三方安装。如果您想使用 Esri ST_Geometry 类型存储空间数据,将 ST_Geometry 形状库复制到 Oracle 计算机并运行创建空间类型地理处理工具以创建 ST_Geometry 类型、子类型和函数。
如果您需要同时编辑附件、存档、拓扑、地理数据库版本这些功能或复制数据,您可以启用 Oracle 数据库中的地理数据库。
PostgreSQL
ArcGIS 支持 PostgreSQL 数据库中的 PostGIS Geometry 和 Esri ST_Geometry 空间类型。PostGIS 是单独的第三方安装。如果您想使用 Esri ST_Geometry 类型存储空间数据,将 st_geometry 形状库复制到 PostgreSQL 安装并运行创建空间类型地理处理工具以创建 ST_Geometry 类型、子类型、视图和函数。
虽然 PostgreSQL 允许用户帐户将数据写入任何名称的方案,ArcGIS 要求在数据库中创建表、视图或其他对象的用户帐户拥有相同用户名和方案名。例如,您不能从 ArcGIS 连接为 vlad 并写入公共方案。
如果您需要同时编辑附件、存档、拓扑、地理数据库版本这些功能或复制数据,您可以启用 PostgreSQL 数据库中的地理数据库。
SAP HANA
使用 SAP HANA 时应谨记以下信息:
- SAP HANA 使用分栏式数据存储,相当于其自己的索引。因此,SAP HANA 表中的空间列不需要使用空间索引来实现查询性能。
- 由于 SAP HANA 不使用用户定义索引,因此不用在 SAP HANA 的表中管理或重建索引。
- 将数据加载到 SAP HANA 时,数据使用的空间参考必须存在于 SAP HANA 系统表中。
- SAP HANA 将 WGS84 平面制图表达中的空间参考系统 EPSG ID 4326 重新定义为圆形地球制图表达。SAP HANA 中通过空间参考系统 4326 存储空间数据的表在 ArcGIS 中可能不会按预期执行。
SAP HANA 中 WGS84 (EPSG ID:4326) 的圆形地球执行包含关键限制,使用特定数据类型时,这些关键限制是不适合的。例如,超过半球边界或跨越半球边界线的全球数据集返回的结果不一致。使用 ArcGIS 创建或加载的数据通过 WGS84 (EPSG ID 1000004326) 坐标系平面版本继续存储以确保 ArcGIS 可以使用所有数据类型。但是,ArcGIS 可使用 SQL 或第三方产品读取您在 SAP HANA 中创建的圆形地球 WGS 数据。
- SAP HANA 在其 ST_SPATIAL_REFERENCE_SYSTEMS 系统视图中存储空间参考系统信息。加载到 SAP HANA 的空间数据必须具备空的空间参考或使用存在于 ST_SPATIAL_REFERENCE_SYSTEMS 系统视图中的空间参考。如果该视图不包含您想加载数据的空间参考系统,使用 SAP HANA CREATE SPATIAL REFERENCE SYSTEM 语句 更新包含所需空间参考系统的视图。
如果导入或复制到 SAP HANA 数据库的空间数据未定义空间参考,SAP HANA 将分配默认为 0 的 SRID,即使用二维平面上的数据的笛卡尔空间参考系统。
SQLite
ArcGIS 支持含有以下文件扩展的 SQLite 数据库,其中包含存储类型之一:
- Esri ST_Geometry - 数据库文件的扩展名必须为 .sqlite。
- SpatiaLite - 数据库文件的扩展名必须为 .sqlite。
- GeoPackages - GeoPackage 文件的扩展名将为 .gpkg。
每个 SQLite 数据库只能使用一种空间存储类型。有关将空间存储类型添加到现有数据库的信息,请参阅在空间上启用 SQLite 数据库。
要创建使用 ST_Geometry 或 SpatiaLite 存储的 SQLite 数据库,或创建 GeoPackage,可使用创建 SQLite 数据库地理处理工具。
请参阅 ArcGIS 10.4.1 支持的 SQLite 版本。
数据访问
通过控制对存储 SQLite 数据库或 GeoPackage 的文件夹的权限来控制对 SQLite 数据库或 GeoPackage 的访问。与其他数据库不同的是,您没有创建经过数据库验证的用户,或没有将特定数据集的权限授予其他用户。
SQLite 和 GeoPackages 可由多个用户进行读取,但在其他用户编辑数据或更新数据库时,您不能更新数据库或数据库的任何内容。例如,当其他用户加载数据或在数据库中创建表时,不要将数据追加到现有表或在数据库中创建表。
数据类型
SQLite 与其他数据库的不同之处还在于,不会为字段分配特定的数据类型,而且不必严格遵守数据类型定义。但 SQLite 会使用可在其中存储不同数据类型值的存储类。
但是,ArcGIS 的每个字段只能使用一种数据类型,并且要严格规定数据类型。查看 ArcGIS 中的 SQLite 数据时您应该注意数据类型强制遵守方面的不同。
以下示例使用整数和文本字段创建表:
CREATE TABLE mytable (
id INTEGER PRIMARY KEY NOT NULL,
item TEXT,
weight INTEGER,
store TEXT;
即使权重字段被定义为整数,SQLite 也允许您存储带有小数的数字。甚至允许您在其中存储文本。例如,您可插入以下记录:
INSERT INTO mytable (id, item, weight, store) VALUES( 1, “magnetic dual elliptical trainer with seat”, 75, “CardioPlus Equipment”
);
INSERT INTO mytable (id, item, weight, store) VALUES( 2, “superfit treadmill4000”, 81.2, “Sports Pit”
);
INSERT INTO mytable (id, item, weight, store) VALUES( 3, “serenity yoga mat”, .4588, “Aerobic Angels Sporting Goods”
);
INSERT INTO mytable (id, item, weight, store) VALUES( 4, “swim fins”, "two", “The Plunge”
);
但由于权重字段被定义为整数,因此这些值会在 ArcGIS 中以如下方式显示:
ID | item | weight | store |
---|---|---|---|
1 | magnetic dual elliptical trainer with seat | 75 | CardioPlus Equipment |
2 | superfit treadmill4000 | 81 | Sports Pit |
3 | serenity yoga mat | 0 | Aerobic Angels Sporting Goods |
4 | swim fins | 0 | The Plunge |
有关哪些 SQLite 数据类型映射哪些 ArcGIS 数据类型的列表,请参阅 ArcGIS 支持的 DBMS 数据类型。
Teradata Data Warehouse Appliance
要从 ArcGIS 连接到 Teradata 数据库,您必须在 ArcGIS 客户端计算机上按特定顺序安装 Teradata GSS 客户端、ICU 库和 ODBC 驱动程序。有关相关信息,请参阅连接至 Teradata。
请参阅 Teradata Data Warehouse Appliance 的版本以及 ArcGIS 10.4.1 支持的客户端库。
以下列出了将 Teradata Data Warehouse Appliance 与 ArcGIS 结合使用的准则:
- 表中的空间列必须命名为 shape 或在视图中使用别名 shape。
Teradata ST_Geometry 类型的基础存储是 CLOB;因此,列的名称或别名 (shape) 是 ArcGIS 确定列存储空间数据的唯一途径。
- 将表从 ArcGIS 客户端添加到 Teradata 时,ArcGIS 将始终在用户自己的数据库中创建表。ArcGIS 不支持在用户自己数据库以外的数据库中创建表。(用户和数据库必须具有相同的名称。) 在 ArcGIS 之外添加的表不需要遵循此规则,从 ArcGIS 连接到 Teradata 的用户仍可查看和发布数据。如果您发布可编辑的要素服务,则用户可以编辑数据。
- 您必须使用 Teradata 提供的镶嵌函数在 Teradata ST_Geometry 列上创建和维护空间索引。
Teradata 通过一个预定义的感兴趣区域使用镶嵌空间索引。因此,基于动态输入的 ArcGIS 空间操作(如放大、缩小和平移)无法使用镶嵌索引。但如果用于定义查询图层的 SQL 语句明确使用镶嵌索引查询数据子集(基于感兴趣的区域),则可在查询图层中使用镶嵌索引。
- ArcGIS 需要唯一的标识字段来渲染地图中的要素并发布 web 服务。ArcMap 在您将空间表添加到地图时会提示您指定此唯一 ID 字段。
ArcGIS 工具不会将新值插入到数据库中的唯一 ID 字段中;而是依赖于数据库向字段插入值。由于 Teradata 不具备用于向 ID 字段填充值的数据类型或内置机制,Teradata 无法使用在数据库表中创建新行的 ArcGIS 工具。
- 作为 Teradata 用户,您了解 Teradata 14.x ST_Geometry 只支持二维空间数据;因此,不能将含有 z- 或 m- 坐标的空间数据粘贴到 Teradata 14.x。Teradata 15.0 ST_Geometry 支持 z- 坐标但不支持 m- 坐标;因此,不能将含有 m- 坐标的空间数据粘贴到 Teradata 15.0。
- 在大多数情况下,您会在 Teradata Data Warehouse Appliance 中存储大量数据。要从 ArcGIS 查看、执行分析或发布数据,请使用数据子集。操作方式取决于您使用数据的目的。
- 如果要向 ArcMap 中添加数据以在地图中进行查看和分析,则添加查询图层并定义仅返回数据子集的查询图层表达式。
- 如果要向 ArcMap 中添加数据以发布地图服务,则定义仅包含数据子集的数据库视图。数据库视图存储在数据库中。可使用创建数据库视图地理处理工具或 SQL 客户端来定义视图。
- 如果要向 ArcMap 添加数据以发布要素服务,请在向地图添加数据前取消选中此选项以默认将新添加的图层设置为可见。接下来,打开图层属性并使用 SQL 创建用于定义数据子集的定义查询。限制 ArcMap 中将显示的数据量后,将图层设为可见并准备地图以供发布。
- 如果使用 ArcGIS 向 Teradata 数据库添加要素类,并且为要素类指定的空间参考不在 Teradata 系统表中,ArcGIS 将会向 Teradata SPATIAL_REF_SYS 表添加记录,从而使该记录也添加到 GEOMETRY_COLUMNS 表中。
这允许您使用比 Teradata 默认提供的更多的空间参考。但升级为主要 Teradata 版本时可能会删除这些表并进行重建,重建后的表中只包含默认值。
升级 Teradata 前,应始终对数据库进行备份。确保备份中含有这些表中的记录,因此在升级 Teradata 后,可在需要时恢复这些记录。在数据库升级操作期间,可按照此常规步骤来备份和恢复 SPATIAL_REF_SYS 和 GEOMETRY_COLUMNS 记录:
- 创建数据库的备份。
- 连接到可在其中复制 SPATIAL_REF_SYS 和 GEOMETRY_COLUMNS 表的数据库。
本示例中的数据库命名为 mybackupdb。
database mybackupdb;
- 创建表的备份副本。
本示例中的源表位于 sysspatial 数据库中。
CREATE TABLE mybackupdb.spatial_ref_sys AS sysspatial.spatial_ref_sys WITH DATA; CREATE TABLE mybackupdb.geometry_columns AS sysspatial.geometry_columns WITH DATA;
- 升级 Teradata 源数据库。
- 连接到具有表副本的数据库。
- 在升级后的数据库中恢复表。
--Restore the geometry columns table. INSERT INTO sysspatial.geometry_columns SELECT * FROM mybackupdb.geometry_columns; --Restore the spatial_ref_sys table. INSERT INTO sysspatial.spatial_ref_sys SELECT * FROM mybackupdb.spatial_ref_sys MINUS SELECT * FROM sysspatial.spatial_ref_sys;
- 恢复表内容后,便可删除表的备份副本。
DROP TABLE mybackupdb.spatial_ref_sys; DROP TABLE mybackupdb.geometry_columns;
- 如有必要,为在数据库中创建数据的用户重新授予这些表的权限。