ArcGIS、ArcSDE 和 Oracle 数据类型比较

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

要将某种类型的数据导入到另一种数据类型的列中,需要了解 ArcSDE 和数据库管理系统 (DBMS) 之间的等效数据类型,因为这会影响到数据内容。同样,在 ArcGIS 中创建新数据集时,了解 ArcGIS 和 DBMS 之间的等效数据类型也十分有用。

在 ArcGIS 中创建要素类或表时,可为字段分配的数据类型只有 11 种。这表示某些数据类型仅允许在 ArcGIS 外部创建。

ArcSDE 数据类型

Oracle 数据类型

ArcGIS 数据类型

注意事项

SE_STRING_TYPE

VARCHAR2

TEXT

如果将用来指定表创建的配置关键字的参数 UNICODE_STRING 设置为 FALSE,那么该字段将创建为 VARCHAR2 字段。

如果在 ArcGIS Desktop 中创建字段时,将文本字段设置为大于 4,000,而将用来指定表创建的配置关键字的参数 UNICODE_STRING 设置为 FALSE,则 Oracle 数据类型将为 CLOB。

SE_NSTRING_TYPE

NVARCHAR2

TEXT

如果将用来指定表创建的配置关键字的参数 UNICODE_STRING 设置为 TRUE,那么该字段将创建为 NVARCHAR2 字段。

如果在 ArcGIS Desktop 中创建字段时,将文本字段设置为大于 2,000,而将用来指定表创建的配置关键字的参数 UNICODE_STRING 设置为 TRUE,则 Oracle 数据类型将为 NCLOB。

SE_INT16_TYPE (SE_SMALLINT_TYPE)

NUMBER(n)

SHORT INTEGER

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

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

SE_INT32_TYPE (SE_INTEGER_TYPE)

NUMBER(n)

LONG INTEGER

OBJECTID

值 n 的取值范围是 1 到 5;但是如果通过 sdetable -o create 操作或 ArcGIS Desktop 创建字段,则 int32 的结果为 NUMBER(38)。

SE_INT64_TYPE

NUMBER(n)

na

值 n 的取值范围是 10 到 38。

要以此数据类型创建列,服务器配置参数 INT64TYPES 必须为 TRUE。

SE_FLOAT32_TYPE (SE_FLOAT_TYPE)

NUMBER(n,m)

na

值 n 的取值范围是 1 到 7;m 为 127 或更小。

SE_FLOAT64_TYPE (SE_DOUBLE_TYPE)

NUMBER(n,m)

na

值 n 的取值范围是 7 到 38;m 为 127 或更小。

SE_DATE_TYPE

DATE

DATE

SE_UUID_TYPE

CHAR or NCHAR (UUID LEN)

GUID 或全局 ID

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

SE_BLOB_TYPE

BLOB

BLOB

SE_SHAPE_TYPE

ST_GEOMETRY*, NUMBER(38), or SDO_GEOMETRY

GEOMETRY

Oracle 数据类型取决于为图层指定的几何存储。压缩二进制或熟知二进制 = NUMBER(38);Oracle Spatial = SDO_GEOMETRY;空间类型 = ST_GEOMETRY。

SE_XML_TYPE

SDE_XML or Oracle XML DB

na

XML 列不在 ArcGIS Desktop 中显示。

SE_RASTER_TYPE

BLOB, LONG RAW, SDO_GEORASTER, or ST_RASTER

RASTER

Oracle 数据类型取决于在 DBTUNE 表中指定的栅格存储。

DECIMAL(31,8)

FLOAT

DECIMAL(31,8)

DOUBLE

SE_CLOB_TYPE

CLOB

TEXT

如果在 ArcGIS Desktop 中创建字段时,将文本字段设置为大于 4,000,而将用来指定表创建的配置关键字的参数 UNICODE_STRING 设置为 FALSE,则 Oracle 数据类型将为 CLOB。

SE_NCLOB_TYPE

NCLOB

TEXT

如果在 ArcGIS Desktop 中创建字段时,将文本字段设置为大于 2,000,而将用来指定表创建的配置关键字的参数 UNICODE_STRING 设置为 TRUE,则 Oracle 数据类型将为 NCLOB。

Oracle 数据类型比较

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


7/10/2012