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)取决于所创建的要素类类型是面、线、点、多点还是多面体。

GLOBAL ID

CHAR(38)

仅地理数据库支持。

GUID

CHAR(UUID LEN)

LONG INTEGER

INTEGER

OBJECT ID

在企业级地理数据库中创建时为 CHARACTER(38)

在数据库中创建时为具有 IDENTITY 属性的 INTEGER

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 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)取决于所创建的要素类类型是面、线、点、多点还是多面体。

GLOBAL ID

CHAR(38)

仅地理数据库支持。

GUID

CHAR(UUID LEN)

LONG INTEGER

INTEGER

OBJECT ID

在企业级地理数据库中创建时为 CHARACTER(38)

在数据库中创建时的 SERIAL

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 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 类型。

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

GLOBAL ID

UNIQUEIDENTIFIER

仅地理数据库支持。

GUID

UNIQUEIDENTIFIER

LONG INTEGER

INT

RASTER

INT, ST_RASTER

仅地理数据库支持栅格数据类型。

在桌面和工作组级地理数据库中,通常作为 INT 数据类型来创建栅格。

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

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

OBJECT ID

INT(4) when created in an enterprise geodatabase

INTEGER with IDENTITY property when created in a database

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 ObjectID。

SHORT INTEGER

SMALLINT

BIT、TINYINT

TEXT

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

CHAR、NCHAR

如果在 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)

ST_GEOMETRY

如果使用 Netezza Spatial 包,将会创建一个 VARCHAR 字段,您必须为字段 shape 命名(或指定别名),以便 ArcGIS 将其识别为空间列。

如果使用 Netezza Spatial Esri 包,将会创建 ST_GEOMETRY 字段。使用 ST_GEOMETRY 字段时,您无需为字段 shape 命名(或指定别名)。

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

NUMBER(31,8)

NUMBER(p,s)

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

FLOAT

NUMBER(31,8)

NUMBER(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 类型

GLOBAL ID

CHAR or NCHAR (UUID LEN)

仅地理数据库支持。

如果将用于指定表创建的配置关键字的参数 UNICODE_STRING 设置为 TRUE,那么唯一标识符字段将创建为 NCHAR 字段。

GUID

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)。否则将使用指定精度。

OBJECT ID

NUMBER(38) when created in an enterprise geodatabase

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

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 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

在地理数据库中,创建要素类时使用的配置关键字的 GEOMETRY_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 文档。

GLOBAL ID

VARCHAR(38)

仅地理数据库支持。

GUID

VARCHAR(38)

LONG INTEGER

INTEGER

SERIAL

OBJECT ID

地理数据库中的 INTEGER

数据库中的 SERIAL

ArcGIS 类型 ObjectID 是表(或要素类)的注册行 ID 列。每个表只能存在一个 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 数据类型

SQLite

SQLite 实施数据类型的方式与大多数其他数据库管理系统不同。SQLite 具有数个可存储不同数据类型的存储类。SQLite 允许您命名数据类型,例如在 ArcGIS 中创建日期、几何或 guid 字段时,可在 SQLite 中创建 realdate、geometryblob 和 uuidtext 类型。还可搜索数据类型的文字文本以获得有关列存储何种数据类型的线索。例如,查找 int 并将其解释为整型字段。因此,如果指定 point 数据类型,SQLite 会将其视为整型字段,因为 point 中包含字符串 int

ArcGIS 假设为表定义中的字段指定的数据类型是要应用于字段中所有值的数据类型。如果 ArcGIS 无法识别数据类型,您将无法从 ArcGIS 访问表。

ArcGIS 数据类型

创建的 SQLite 数据类型

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

备注

BLOB

blob(n)

DATE

realdate

DOUBLE

float64

numeric、double、float、boolean、real

integer、int、int64、int32(在没有安装 SpatiaLite 的数据库中)

FLOAT

float64

GEOMETRY

geometryblob

GUID

uuidtext

LONG INTEGER

int32(n)

integer、int、int32(在带有 SpatiaLite 的数据库中)

整型主键

n >= -2147483648 和 n <= 2147483648

OBJECTID

int32

SHORT INTEGER

int16(n)

n >= -32768 和 n <= 32768

TEXT

text(n)

char、varchar、blob

Teradata

ArcGIS 数据类型

创建的 Teradata 数据类型

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

备注

BLOB

blob

使用 Teradata 默认大小创建的 Blob。

DATE

时间戳

DOUBLE

decimal(38.8)

decimal(n,m)、number(n,m)、numeric(n,m)

m > 0

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

FLOAT

decimal(38.8)

decimal(n,m)、number(n,m)、numeric(n,m)

m > 0

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

GEOMETRY

CLOB (ST_Geometry)

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

GUID

character(38) 字符集拉丁语

LONG INTEGER

整型

decimal(n,m)、number(n,m)、numeric(n,m)

n = 5、6、7、8 或 9

m = 0

OBJECTID

整型

SHORT INTEGER

smallint

decimal(n,m)、number(n,m)、numeric(n,m)

n <= 4

m = 0

TEXT

varchar(50) 字符集 unicode

varchar(n) 字符集 unicode、varchar(n) 字符集拉丁语、char(n) 字符集 unicode、char(n) 字符集拉丁语

5/12/2014