ArcGIS 中支持的 DBMS 数据类型

创建表或向数据库中的表添加新列时,列将创建为特定的数据类型。数据类型是用于确定数据值自身以及可对数据执行哪些操作的分类,也表示列中数据在数据库中的存储方式。

从 ArcGIS 访问数据库表时,可以使用特定数据类型。在目录树中通过“数据库连接”节点或在 ArcMap 中通过查询图层访问数据库表时,ArcGIS 会过滤掉任何不支持的数据类型。如果直接访问数据库表,则不支持的数据类型不会显示在 ArcGIS 界面,您也无法通过 ArcGIS 编辑这些数据。同样,复制包含不受 ArcGIS 支持的数据类型的表时,将只复制支持的数据类型;将表粘贴到另一个数据库或地理数据库时,不会存在不支持的数据类型列。

下表列出了每一个受支持的 DBMS 的数据库数据类型与相应的 ArcGIS 数据类型。第一列列出了 ArcGIS 中出现的数据类型。第二列显示的是当您在 ArcGIS 中使用第一列中显示的数据类型创建表或要素类时,在数据库中创建的数据类型。第三列显示的是其他数据库数据类型,当您在 ArcGIS 外部创建表时,该数据类型将映射到第一列所显示的 ArcGIS 数据类型上。

IBM DB2

ArcGIS 数据类型

创建的 DB2 数据类型

可以查看的其他 DB2 数据类型

备注

BLOB

BLOB

DATE

TIMESTAMP

DOUBLE

DECIMAL(p,s)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

FLOAT

DECIMAL(p,s)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

GEOMETRY

ST_GEOMETRY

ST_Geometry 是一个超类。实际创建的数据子类型(如 ST_Multilinestring 或 ST_Point)取决于所创建的要素类类型是面、线、点、多点还是多面体。

GUID

CHAR(UUID LEN)

LONG INTEGER

INTEGER

OBJECTID

CHARACTER(38) when created in enterprise geodatabases

INTEGER with IDENTITY property when created in a database

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 ObjectID。对于在 ArcGIS 外部创建的表,只有在注册到地理数据库之后才会将列转换为 ObjectID。

RASTER

BLOB

仅企业级地理数据库支持

SHORT INTEGER

SMALLINT

TEXT

VARCHAR

CHAR

ArcGIS 支持的 DB2 数据类型

Informix

ArcGIS 数据类型

创建的 Informix 数据类型

可以查看的其他 Informix 数据类型

备注

BLOB

BLOB

DATE

DATETIME

DOUBLE

DECIMAL(31,8)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

FLOAT

DECIMAL(31,8)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

GEOMETRY

ST_GEOMETRY

ST_Geometry 是一个超类。实际创建的数据子类型(如 ST_Multilinestring 或 ST_Point)取决于所创建的要素类类型是面、线、点、多点还是多面体。

GUID

CHAR(UUID LEN)

LONG INTEGER

INTEGER

OBJECTID

CHARACTER(38) when created in an enterprise geodatabase

在数据库中创建时的 SERIAL

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 ObjectID。对于在 ArcGIS 外部创建的表,只有在注册到地理数据库之后才会将列转换为 ObjectID。

RASTER

BLOB

仅企业级地理数据库支持

SHORT INTEGER

SMALLINT

TEXT

VARCHAR

CHAR

ArcGIS 支持的 Informix 数据类型

Microsoft SQL Server

ArcGIS 数据类型

创建的 SQL Server 数据类型

可以查看的其他 SQL Server 数据类型

备注

BLOB

VARBINARY(MAX)

BINARY、IMAGE、TIMESTAMP、VARBINARY(n)

DATE

DATETIME2(7)

DATETIME2(n)、DATETIME、SMALLDATETIME

DOUBLE

NUMERIC(p,s)

DECIMAL、FLOAT、MONEY、SMALLMONEY

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

FLOAT

NUMERIC(p,s)

REAL

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

GEOMETRY

INT, GEOMETRY, GEOGRAPHY

在企业级地理数据集中,创建的 SQL Server 数据类型取决于创建要素类时使用的 DBTUNE 配置关键字的 GEOMETRY_STORAGE 参数。SDEBINARY = INT;GEOMETRY = GEOMETRY 列;GEOGRAPHY = GEOGRAPHY 列。

在数据库中,指定创建要素类时使用 GEOMETRY 还是 GEOGRAPHY。

GUID

UNIQUEIDENTIFIER

LONG INTEGER

INT

RASTER

INT, ST_RASTER

仅企业级地理数据库支持栅格数据类型,且创建的 SQL Server 数据类型取决于创建栅格列时使用的 DBTUNE 配置关键字。如果关键字的 RASTER_STORAGE 参数设置为 BINARY,则会创建 INT 列;如果该参数设置为 ST_RASTER,则会创建 ST_Raster 列。

要使用 ST_Raster,必须先在地理数据库中对其进行单独配置。有关说明,请参阅在 SQL Server 中安装 ST_Raster 类型

OBJECTID

INT(4) when created in an enterprise geodatabase

INTEGER with IDENTITY property when created in a database

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 ObjectID。对于在 ArcGIS 外部创建的表,只有在注册到地理数据库之后才会将列转换为 ObjectID。

SHORT INTEGER

SMALLINT

BIT、TINYINT

TEXT

VARCHAR, NVARCHAR, VARCHAR(MAX), NVARCHAR(MAX)

CHAR、NCHAR、NTEXT

如果在 SQL Server 数据库中创建 VARCHAR 或 VARCHAR(MAX) 字段,那么在 ArcGIS 中查看时,该字段将映射至 ArcGIS TEXT 数据类型。如果在 ArcGIS 中的 SQL Server 数据库中创建了一个 TEXT 字段,则始终会使用 NVARCHAR 或 NVARCHAR(MAX)。

在企业级地理数据库中,如果 DBTUNE UNICODE_STORAGE 参数设置为 FALSE,并且文本字段是 7,999 个字符或更少,则会使用 VARCHAR。

如果企业级地理数据库中的 DBTUNE UNICODE_STORAGE 参数设置为 TRUE,并且文本字段是 3,999 个字符,则会使用 NVARCHAR。

如果企业地理数据库中的 DBTUNE UNICODE_STORAGE 参数设置为 FALSE,并且文本字段是 8,000 个字符或更多,则会使用 VARCHAR(MAX)。

如果企业地理数据库中的 DBTUNE UNICODE_STORAGE 参数设置为 TRUE,并且文本字段是 4,000 个字符或更多,则会使用 NVARCHAR(MAX)。

ArcGIS 支持的 SQL Server 数据类型

Netezza

ArcGIS 数据类型

所创建的 Netezza 数据类型

可以查看的其他 Netezza 数据类型

备注

BLOB

不支持

DATE

TIMESTAMP

DATE、TIME、TIME WITH TIME ZONE

DOUBLE

NUMERIC(38,8)

BIGINT(别名 int8)、NUMERIC(p,s)、FLOAT(p)、REAL、DOUBLE PRECISION

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。

FLOAT

FLOAT(p)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。

GEOMETRY

VARCHAR(n)

该字段必须命名为 shape,ArcGIS 才能将其识别为空间列。

GUID

CHAR(38)

LONG INTEGER

INTEGER(别名 int 或 int4)

OBJECTID

INTEGER(别名 int 或 int4)

SHORT INTEGER

SMALLINT(别名 int2)

TEXT

NVARCHAR(50)

CHAR(n)、NCHAR(n)、VARCHAR(n)

如果数据库设置为 Unicode 编码,将创建 NVARCHAR。如果数据库未设置为 Unicode 编码,将创建 VARCHAR。

Oracle

ArcGIS 数据类型

创建的 Oracle 数据类型

其他可查看的 Oracle 数据类型

备注

BLOB

BLOB

DATE

DATE

DOUBLE

DECIMAL(31,8)

DECIMAL(p,s)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

FLOAT

DECIMAL(31,8)

DECIMAL(p,s)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

GEOMETRY

ST_GEOMETRY NUMBER(38) or SDO_GEOMETRY

Oracle 数据类型取决于创建要素类时指定的几何存储。压缩二进制或熟知二进制(仅企业级地理数据库)= NUMBER(38);Oracle Spatial = SDO_GEOMETRY;空间类型 = ST_GEOMETRY。

ST_Geometry 是一个超类。在 ArcGIS for Desktop 中创建要素类时,始终使用 ST_Geometry。如果使用 SQL 创建空间列,则实际创建的数据子类型(例如 ST_Multilinestring 或 ST_Point)取决于您所指定的子类型。

要在数据库中使用 ST_Geometry 必须先进行安装。有关详细信息,请参阅向 Oracle 数据库添加 ST_Geometry 类型

GUID 或全局 ID

CHAR or NCHAR (UUID LEN)

如果将用于创建表的配置关键字的参数 UNICODE_STRING 设置为 TRUE,那么企业级地理数据库中唯一标识符字段将创建为 NCHAR 字段。

LONG INTEGER

NUMBER(38)

NUMBER(n)

值 n 的取值范围是 5 到 10。如果使用 ArcGIS for Desktop 或 ArcObjects 创建并将精度设置为 0,则会在数据库中创建 NUMBER(38)。否则将使用指定精度。

OBJECTID

NUMBER(38) when created in an enterprise geodatabase

NUMBER(38) with sequence and trigger when created in a database

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 ObjectID。对于在 ArcGIS 外部创建的表,只有在注册到地理数据库之后才会将列转换为 ObjectID。

RASTER

BLOB, LONG RAW, SDO_GEORASTER, or ST_RASTER

仅企业级地理数据库支持栅格,且创建的 Oracle 数据类型取决于创建栅格目录、栅格数据集或镶嵌数据集时所使用的 DBTUNE 配置关键字。

SHORT INTEGER

NUMBER(5)

NUMBER(n)

值 n 的取值范围可以从 1 到 5。但短整型列只能存储介于范围 -32,768 到 32,767 之间的值。即使数字的精度为 5,也无法在短整型列中存储大于 32,767 或小于 -32,768 的数字。

使用 ArcGIS for Desktop 创建时,n = 5。这种情况下,您可以存储介于允许范围之内的短整型值。

TEXT

VARCHAR2、CLOB、NVARCHAR2 或 NCLOB

如果未将数据库设置为使用 Unicode 编码,则将创建 VARCHAR2 字段。

如果将文本字段的大小设置为大于 4,000,且将数据库设置为使用 Unicode 编码,那么 Oracle 数据类型将为 CLOB。

如果将数据库设置为使用 Unicode 编码,那么字段将创建为 NVARCHAR2。(这是 Oracle 中企业级地理数据库的默认设置。)

如果将文本字段的大小设置为大于 2,000,且将数据库设置为使用 Unicode 编码,那么 Oracle 数据类型将为 NCLOB。

ArcGIS 所支持的 Oracle 数据类型

PostgreSQL

ArcGIS 数据类型

创建的 PostgreSQL 数据类型

可以查看的其他 PostgreSQL 数据类型

备注

BLOB

BYTEA

DATE

TIMESTAMP WITHOUT ZONE

TIMESTAMP

DOUBLE

NUMERIC(p)

BIG SERIAL、DOUBLE PRECISION

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

FLOAT

NUMERIC(p)

ArcGIS 中指定的精度和小数位数可以影响在数据库中创建的生成数据类型。有关详细信息,请参阅 ArcGIS 字段数据类型

GEOMETRY

ST_GEOMETRY or GEOMETRY

在企业级地理数据库中,创建要素类时使用的配置关键字的 GEOEMTRY_STORAGE 设置将决定在数据库中创建的数据类型。

ST_Geometry 和几何都属于超类。在 ArcGIS for Desktop 中创建要素类时,创建为 ST_Geometry 的点要素类使用 ST_Point 子类型进行存储,创建为 PostGIS 几何的点要素类使用 Point 子类型进行存储。对于在 ArcGIS for Desktop 中创建的所有其他类型的要素类,都使用超类。如果是使用 SQL 创建空间列,则实际创建的数据子类型将取决于所指定的子类型是什么类型。

要在数据库中使用 ST_Geometry 必须先进行安装。有关详细信息,请参阅向 PostgreSQL 数据库添加 ST_Geometry 类型

要使用 PostGIS 几何类型,您必须在 PostgreSQL 数据库集群中安装 PostGIS,且数据库本身必须允许使用 PostGIS。有关详细信息,请参阅 PostgreSQL 文档。

GUID

VARCHAR(38)

LONG INTEGER

INTEGER

SERIAL

OBJECTID

地理数据库中的 INTEGER

数据库中的 SERIAL

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 ObjectID。对于在 ArcGIS 外部创建的表,只有在注册到地理数据库之后才会将列转换为 ObjectID。

RASTER

BYTEA or ST_RASTER

仅在企业级地理数据库中支持栅格,且创建的 PostgreSQL 数据类型取决于创建栅格目录、栅格数据集或镶嵌数据集时所使用的 DBTUNE 配置关键字。

要使用 ST_Raster,必须先在地理数据库中对其进行单独配置。有关说明,请参阅在 PostgreSQL 中安装 ST_Raster 类型

SHORT INTEGER

SMALLINT

REAL

TEXT

CHARACTER VARYING

CHARACTER、VARCHAR、TEXT

ArcGIS 所支持的 PostgreSQL 数据类型
9/15/2013