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 |
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 |
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)。 |
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。 |
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 |
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) 字符集拉丁语 |