Skip To Content

支持的数据库管理系统

您可以从 ArcGIS 客户端进行连接并使用此处列出的数据库管理系统或数据仓库应用程序中的数据。要查看数据库如何与 ArcGIS Server 搭配使用,请参阅数据库和ArcGIS Enterprise

数据库管理系统之间的区别在于实施方式和所提供的功能不同。因此,使用 ArcGIS 中的每个数据库类型有时需要了解其说明或规则。这些将在以下各节中列出。

Dameng

空间数据存储在 Dameng 几何类型中。典型的 Dameng 安装包括空间类型;但是,您必须将其初始化以使用。

请参阅 ArcGIS 10.7.1 支持的 Dameng 版本

IBM Db2

Db2 使用操作系统登录验证数据库连接。但是,从数据库连接对话框或创建数据库连接地理处理工具连接至 Db2 时,可指定数据库身份验证选项。可保存登录的特定用户名和密码,注册与 ArcGIS Server 之间的数据库连接时将会用到。

ArcGIS 需要唯一的标识字段以渲染地图中的要素。创建新要素时,ArcGIS 依靠数据库向唯一的标识字段插入值。由于 Db2 z/OS 不具备用于向 ID 字段填充值的数据类型或内置机制,Db2 z/OS 中的数据库无法使用在数据库表中创建新行的 ArcGIS 工具。此外,由于无法将 ArcGIS 中的要素插入到 Db2 z/OS 表,因此您无法发布包含 Db2 z/OS 数据库中数据的要素服务。

如果需要附件、存档、拓扑、同时编辑地理数据库版本、复制数据等功能,或想发布包含 Db2 z/OS 数据的要素服务,则可以启用 Db2 数据库中的地理数据库。

请参阅 ArcGIS 10.7.1 支持的 Db2 版本

IBM Informix

Informix 使用操作系统登录验证数据库连接。但是,从数据库连接对话框或创建数据库连接地理处理工具连接 Informix 时,可指定数据库身份验证选项。可保存登录的特定用户名和密码,注册与 ArcGIS Server 之间的数据库连接时将会用到。

如果需要附件、存档、拓扑、同时编辑地理数据库版本或复制数据等功能,则可以启用 Informix 数据库中的地理数据库。

请参阅 ArcGIS 10.7.1 支持的 Informix 版本

IBM Netezza Data Warehouse Appliance

IBM Netezza Data Warehouse Appliance 在此版本中已弃用

数据仓库通常存储大量数据。要使用 ArcGIS 查看、执行分析或将数据发布到 Netezza,请使用数据子集。操作方式取决于您使用数据的目的。

  • 如果要向 ArcMapArcGIS Pro 添加数据以在地图中进行查看和分析,则添加查询图层并定义仅返回数据子集的查询图层表达式。
  • 如果要向 ArcMap 添加数据以发布地图服务,或向 ArcGIS Pro 添加数据以发布引用注册数据的地图影像图层,则定义仅包含数据子集的数据库视图。数据库视图存储在数据库中。可使用创建数据库视图地理处理工具或 SQL 客户端来定义视图。
  • 如果要向 ArcMap 添加数据以发布要素服务或发布到门户,请在向地图添加数据前取消选中此选项以默认将新添加的图层设置为可见。接下来,打开图层属性并使用 SQL 创建用于定义数据子集的定义查询。限制地图中显示的数据量后,将图层设为可见并准备地图以供发布。
  • 如果要向 ArcGIS Pro 添加数据以发布引用注册数据的要素图层或发布到门户,请在向地图添加数据前取消选中此选项以默认将新添加的图层设置为可见。接下来,使用 SQL 为定义数据子集的图层创建定义查询。限制地图中显示的数据量后,将图层设为可见并准备地图以供发布。

警告:

除非已对地图进行设置使数据在添加时不会自动显示,否则在尚未定义数据子集的情况下,请勿将数据直接从数据库连接中拖动到地图。正常存储在数据仓库设备中的超大型数据集需要耗费很长时间才能显示在地图上。

ArcGIS 针对使用 Netezza Data Warehouse Appliance 有两项特定的限制:

  • 如果使用传统 Netezza 空间类型,则表中所有空间列必须命名为 shape 或使用别名 shape

    传统空间类型使用 varchar 数据类型;因此,shape 列名称或别名是 ArcGIS 确定该列存储空间数据而非文本的途径。如果该表中的空间列有不同的名称,则需在表中创建一个视图并将该空间列名称的别名设为 shape

  • ArcGIS 需要唯一的标识字段来渲染地图中的要素。ArcMapArcGIS Pro 在您将空间表添加到地图时会提示您指定此唯一 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 数据类型磁盘空间使用

DATE

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 包,将会创建 ST_Geometry 列。

对于传统 Netezza Spatial Package

  • 作为字符创建的点几何有所不同 (80)。
  • 所有其他几何的基本大小均为 64,000 字节。但是,如果创建如此大小的字段会导致行的总大小超过 65,535 字节,则将使用更小的精度创建 varchar 字段。

    例如,如果行中所有其他字段的总大小为 2,000 字节,则将作为字符创建的几何字段会有所不同 (63,535)。

对于 Netezza Spatial Esri

  • 作为 ST_Geometry 创建的点几何 (140)。
  • 所有其他几何的基本大小均为 64,000 字节。但是,如果创建如此大小的字段会导致行的总大小超过 65,535 字节,则将使用更小的精度创建 ST_Geometry 字段。

    例如,如果行中所有其他字段的总大小为 2,000 字节,则几何字段将作为 ST_Geometry 创建 (63,535)。

注:

当数据插入到要素类时,如有任一单个几何的大小超过了字段大小,则将会插入空几何。

例如,如果将面要素类从另一数据源复制并粘贴到您的 Netezza 数据库,则将使用几何字段来创建表(最大为 64,000 字节)。接着,记录将插入到表中。如果要插入的几何超过了 64,000 字节,则将插入记录和所有其他属性,但会在几何字段中插入空值。

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 表示针对文本字段指定的字段长度。默认值为 50。

p x 4 = 使用的字节数量

请参阅 ArcGIS Netezza Data Warehouse Appliance 支持的 10.7.1 版本

Microsoft Azure 数据库

如果在 Microsoft Azure 上部署 ArcGIS,则可以使用以下任意 Microsoft Azure 基于云的数据库服务来存储您的数据:

  • Microsoft Azure SQL Database
  • Microsoft Azure Database for PostgreSQL

如果可以,应在 Microsoft Azure 上运行 ArcGIS 客户端,并使用与 Azure 数据库相同的位置(区域)以便获得更好的性能。

提示:

Esri 可提供一个包含 ArcGIS EnterpriseMicrosoft Azure 图像。您可以从 My Esri 下载 ArcGIS Enterprise Cloud Builder for Microsoft Azure,并使用它在 Microsoft Azure 上部署 ArcGIS Enterprise。您可以选择在 Enterprise 部署中将 Azure 数据库注册到 ArcGIS Server 站点。有关详细信息,请参阅 Microsoft Azure 上的 ArcGIS Enterprise 帮助。

请参阅 ArcGIS 10.7.1 支持的 Azure 数据库服务版本

Azure SQL Database

可以将单个数据库或 Azure SQL Database 的托管实例与 ArcGIS 配合使用。要连接到这些数据库,需要在 ArcGIS 客户端计算机上安装受支持的 Microsoft ODBC driver for SQL Server

使用 ArcGIS 中的 Azure SQL Database 时,请谨记以下信息:

  • 由于 Azure SQL DatabaseSQL Server 执行十分相似,数据库连接对话框或创建数据库连接地理处理工具中没有单独的 Azure SQL 数据库。连接 Azure SQL Database 时指定 SQL Server,并且遵从从 ArcGIS 向 SQL Server 创建连接的说明
  • 您必须在数据库连接对话框中输入数据库名称。不能从下拉列表中选择数据库,也不能将数据库文本框留空。
  • 向要素类中加载大量数据(几百万条记录或者更多)时,应该先估计数据的空间 (x,y) 范围,针对要素类创建合适的空间索引,然后再加载数据。如果 Microsoft Azure 确定对包含数百万条记录的要素类创建空间索引会占用过多服务器资源,则会终止此操作。这会使您的要素类不具有空间索引。因此,Esri 建议您首先创建一个合适的空间索引,然后再加载数据。
  • 有些任务独立于 ArcGIS 而直接在数据库管理系统中执行。如果您非常熟悉 SQL Server 的使用,那么要转而使用 Azure SQL Database 时,应该注意到其中的一些差别。有关这些差别的信息,请参阅Microsoft TechNet 文章,功能比较:Azure SQL DatabaseSQL Server

Azure Database for PostgreSQL

如果使用 Azure Database for PostgreSQL(无论其是否包含地理数据库),则将始终使用 PostGIS 空间数据类型存储空间数据。无法在这些数据库中安装或使用 ST_Geometry。

Microsoft SQL Server

虽然 Microsoft 允许 SQL Server 用户帐户将数据写入任何名称的方案,ArcGIS 要求在数据库中创建表、视图或其他对象的用户帐户拥有相同用户名和方案名。例如,您不能从 ArcGIS 连接为 elmer 并写入名为 dataowner 的方案。

如果需要附件、存档、拓扑、同时编辑地理数据库版本或复制数据等功能,则可以启用 SQL Server 数据库中的地理数据库。

请参阅 ArcGIS 10.7.1 支持的 SQL Server 版本

Oracle

ArcGIS 支持 Oracle 数据库中的 Oracle SDO_Geometry 和 Esri ST_Geometry 空间类型。SDO_Geometry 是单独的第三方安装。如果您想使用 Esri ST_Geometry 类型存储空间数据,将 ST_Geometry 形状库复制到 Oracle 计算机并运行创建空间类型地理处理工具以创建 ST_Geometry 类型、子类型和函数。

如果需要附件、存档、拓扑、同时编辑地理数据库版本或复制数据等功能,则可以启用 Oracle 数据库中的地理数据库。

请参阅 ArcGIS 10.7.1 支持的 Oracle 版本

PostgreSQL

ArcGIS 支持 PostgreSQL 数据库中的 PostGIS 几何和地理类型及 Esri ST_Geometry 空间类型。PostGIS 是单独的第三方安装。如果您想使用 Esri ST_Geometry 类型存储空间数据,将 st_geometry 形状库复制到 PostgreSQL 安装并运行创建空间类型地理处理工具以创建 ST_Geometry 类型、子类型、视图和函数。

虽然 PostgreSQL 允许用户帐户将数据写入任何名称的方案,ArcGIS 要求在数据库中创建表、视图或其他对象的用户帐户拥有相同用户名和方案名。例如,您不能从 ArcGIS 连接为 vlad 并写入公共方案。

如果需要附件、存档、拓扑、同时编辑地理数据库版本或复制数据等功能,则可以启用 PostgreSQL 数据库中的地理数据库。

请参阅 ArcGIS 10.7.1 支持的 PostgreSQLPostGIS 版本

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 空间参考文档的 CREATE SPATIAL REFERENCE SYSTEM 页。

    如果导入或复制到 SAP HANA 数据库的空间数据未定义空间参考,SAP HANA 将分配默认为 0 的 SRID,即使用二维平面上的数据的笛卡尔空间参考系统。

请参阅 ArcGIS 10.7.1 支持的 SAP HANA 版本

SQLite

ArcGIS 支持含有以下文件扩展的 SQLite 数据库,其中包含存储类型之一:

  • Esri ST_Geometry - 数据库文件的扩展名必须为 .sqlite
  • SpatiaLite - 数据库文件的扩展名必须为 .sqlite
  • GeoPackages - GeoPackage 文件的扩展名将为 .gpkg

每个 SQLite 数据库只能使用一种空间存储类型。有关将空间存储类型添加到现有数据库的信息,请参阅在空间上启用 SQLite 数据库

要创建使用 ST_Geometry 或 SpatiaLite 存储的 SQLite 数据库,或创建 GeoPackage,可使用创建 SQLite 数据库地理处理工具。

请参阅 ArcGIS 10.7.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 中以如下方式显示:

IDitemweightstore

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 Data Warehouse Appliance,您必须在 ArcGIS 客户端计算机上按特定顺序安装 Teradata GSS 客户端、ICU 库和 ODBC 驱动程序。相关信息请参阅连接至 Teradata

请参阅 ArcGIS 10.7.1 支持的 Teradata Data Warehouse Appliance 版本和客户端库

以下列出了将 Teradata Data Warehouse Appliance 与 ArcGIS 结合使用的准则:

  • 表中的空间列必须命名为 shape 或在视图中使用别名 shape

    Teradata ST_Geometry 类型的基础存储是 CLOB;因此,列的名称或别名 (shape) 是 ArcGIS 确定列存储空间数据的唯一途径。

  • 您必须使用 Teradata 提供的镶嵌函数在 Teradata ST_Geometry 列上创建和维护空间索引。

    Teradata 通过一个预定义的感兴趣区域使用镶嵌空间索引。因此,基于动态输入的 ArcGIS 空间操作(如放大、缩小和平移)无法使用镶嵌索引。但如果用于定义查询图层的 SQL 语句明确使用镶嵌索引查询数据子集(基于感兴趣的区域),则可在查询图层中使用镶嵌索引。

  • ArcGIS 需要唯一的标识字段来渲染地图中的要素并发布 web 服务。ArcMap 在您将空间表添加到地图时会提示您指定此唯一 ID 字段。ArcMapArcGIS Pro 在您将空间表添加到地图时会提示您指定此唯一 ID 字段。

    ArcGIS 工具不会将新值插入到数据库中的唯一 ID 字段中;而是依赖于数据库向字段插入值。由于 Teradata 不具备用于向 ID 字段填充值的数据类型或内置机制,Teradata 无法使用在数据库表中创建新行的 ArcGIS 工具。

  • 作为 Teradata 用户,您了解 Teradata 14.x ST_Geometry 仅支持二维空间数据;因此,不能将含有 z- 或 m- 坐标的空间数据粘贴到 Teradata 14.x。您无法粘贴包含z或m坐标的空间数据 14.x. Teradata 15.0 ST_Geometry 支持 z- 坐标但不支持 m- 坐标;因此,不能将含有 m- 坐标的空间数据粘贴到 Teradata 15.0。
  • 大多数情况下,您会在 Teradata Data Warehouse Appliance 中存储大量数据。要在 ArcGIS 客户端中查看、执行分析或发布数据,请使用数据子集。操作方式取决于您使用数据的目的。

    • 如果要向 ArcMapArcGIS Pro 添加数据以在地图中进行查看和分析,则添加查询图层并定义仅返回数据子集的查询图层表达式。
    • 如果要向 ArcMap 添加数据以发布地图服务,或向 ArcGIS Pro 添加数据以发布引用注册数据的地图影像图层,则定义仅包含数据子集的数据库视图。数据库视图存储在数据库中。可使用创建数据库视图地理处理工具或 SQL 客户端来定义视图。
    • 如果要向 ArcMap 添加数据以发布要素服务或发布到门户,请在向地图添加数据前取消选中此选项以默认将新添加的图层设置为可见。接下来,打开图层属性并使用 SQL 创建用于定义数据子集的定义查询。限制地图中显示的数据量后,将图层设为可见并准备地图以供发布。
    • 如果要向 ArcGIS Pro 添加数据以发布引用注册数据的要素图层或发布到门户,请在向地图添加数据前取消选中此选项以默认将新添加的图层设置为可见。接下来,使用 SQL 为定义数据子集的图层创建定义查询。限制地图中显示的数据量后,将图层设为可见并准备地图以供发布。

    警告:

    除非已对地图进行设置使数据在添加时不会自动显示,否则在尚未定义数据子集的情况下,请勿将数据直接从数据库连接中拖动到地图。正常存储在数据仓库设备中的超大型数据集需要耗费很长时间才能显示在地图上。

  • 如果使用 ArcGIS 向 Teradata 数据库添加要素类,并且为要素类指定的空间参考不在 Teradata 系统表中,ArcGIS 将会向 Teradata SPATIAL_REF_SYS 表添加记录,从而使该记录也添加到 GEOMETRY_COLUMNS 表中。

    这允许您使用比 Teradata 默认提供的更多的空间参考。但升级为主要 Teradata 版本时可能会删除这些表并进行重建,重建后的表中只包含默认值。

    升级 Teradata 前,应始终对数据库进行备份。确保备份中含有这些表中的记录,因此在升级 Teradata 后,可在需要时恢复这些记录。在数据库升级操作期间,可按照此常规步骤来备份和恢复 SPATIAL_REF_SYS 和 GEOMETRY_COLUMNS 记录:

    1. 创建数据库的备份。
    2. 连接到可在其中复制 SPATIAL_REF_SYS 和 GEOMETRY_COLUMNS 表的数据库。

      本示例中的数据库命名为 mybackupdb

      database mybackupdb;

    3. 创建表的备份副本。

      本示例中的源表位于 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;

    4. 升级 Teradata 源数据库。
    5. 连接到具有表副本的数据库。
    6. 在升级后的数据库中恢复表。

      --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;

    7. 恢复表内容后,便可删除表的备份副本。

      DROP TABLE mybackupdb.spatial_ref_sys;
      DROP TABLE mybackupdb.geometry_columns;

    8. 如有必要,为在数据库中创建数据的用户重新授予这些表的权限。