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