Integration Services 数据类型
更新日期: 2007 年 9 月 15 日
当数据进入包中的数据流时,提取这些数据的源会将数据转换为 Integration Services 数据类型。 为数值数据分配数值数据类型,为字符串数据分配字符数据类型,为日期分配日期数据类型。 其他数据,如 GUID 和二进制大型对象块 (BLOB),也要分配相应的 Integration Services 数据类型。 如果数据的数据类型无法转换为 Integration Services 数据类型,则会发生错误。
某些数据流组件会在 Integration Services 数据类型和 Microsoft .NET Framework 的托管数据类型之间进行数据类型转换。 有关 Integration Services 和托管数据类型之间的映射的详细信息,请参阅Mapping Data Types in the Data Flow。
下表列出了 Integration Services 数据类型。
数据类型 | 说明 |
---|---|
DT_BOOL |
布尔值。 |
DT_BYTES |
二进制数据值。 长度可变,且最大长度为 8000 个字节。 |
DT_CY |
货币值。 此数据类型为八字节有符号整数,其小数位数为 4,最大精度为 19。 |
DT_DATE |
由年、月、日和小时组成的日期结构。 DT_DATE 数据类型是使用 8 字节浮点数字来实现的。 日以整数增量表示,从 1899 年 12 月 30 日开始,午夜时间为零点。 小时值以数字的小数部分的绝对值表示。 但是,浮点值无法表示所有实数值;因此,可以在 DT_DATE 中显示的日期的范围受到限制。 另一方面,DT_DBTIMESTAMP 以具有单独的年、月、日、小时、分钟、秒和毫秒字段的结构表示。 此数据类型对能够表示的日期没有范围限制。 |
DT_DBDATE |
由年、月和日组成的日期结构。 |
DT_DBTIME |
由小时、分钟和秒组成的时间结构。 |
DT_DBTIMESTAMP |
由年、月、日、小时、分钟、秒和毫秒组成的时间戳结构。 |
DT_DECIMAL |
精度和小数位数固定的精确数值。 此数据类型为具有单独符号的十二字节无符号整数,其小数位数为 0 到 28,最大精度为 29。 |
DT_FILETIME |
64 位值,表示从 1601 年 1 月 1 日起长度为 100 纳秒的间隔的数量。 |
DT_GUID |
全局唯一标识符 (GUID)。 |
DT_I1 |
单字节有符号整数。 |
DT_I2 |
双字节有符号整数。 |
DT_I4 |
四字节有符号整数。 |
DT_I8 |
八字节有符号整数。 |
DT_NUMERIC |
精度和小数位数固定的精确数值。 此数据类型为具有单独符号的十六字节无符号整数,其小数位数为 0 到 38,最大精度为 38。 |
DT_R4 |
单精度浮点值。 |
DT_R8 |
双精度浮点值。 |
DT_STR |
以空值结束的 ANSI/MBCS 字符串,最大长度为 8000 个字符。 (如果列值包含其他空终止符,则字符串将在第一个空值出现的位置截断。) |
DT_UI1 |
单字节无符号整数。 |
DT_UI2 |
双字节无符号整数。 |
DT_UI4 |
四字节无符号整数。 |
DT_UI8 |
八字节无符号整数。 |
DT_WSTR |
以空值结束的 Unicode 字符串,最大长度为 4000 个字符。 (如果列值包含其他空终止符,则字符串将在第一个空值出现的位置截断。) |
DT_IMAGE |
二进制值,最大大小为 231-1 (2,147,483,647) 个字节。 . |
DT_NTEXT |
Unicode 字符串,最大长度为 230-1 (1,073,741,823) 个字符。 |
DT_TEXT |
ANSI/MBCS 字符串,最大长度为 231-1 (2,147,483,647) 个字符。 |
更改列的数据类型
如果列中的数据不必是源数据类型分配的全角形式,那么最好更改列的数据类型。 使每个数据行尽可能窄有助于优化传输数据时的性能,因为每行越窄,数据从源移动到目标就越快。
Integration Services 包含一组完整的数值数据类型,这样可以使数据类型近似匹配于数据大小。 例如,如果数据类型为 DT_UI8 的列中的值始终为 0 到 3000 之间的整数,则可以将数据类型更改为 DT_UI2。 同样,如果数据类型为 DT_CY 的列改用整数数据类型可以满足包数据要求,则可以将数据类型更改为 DT_I4。
还可以更改具有日期/时间数据的列的数据类型,以便提取数据的日期或时间部分。 例如,如果将列的数据类型从 DT_DBTIMESTAMP 更改为 DT_DBTIME,那么只有值的小时、分钟和秒部分可用。
可以按以下方法更改列的数据类型:
- 使用转换将列值替换为表达式的结果,或者创建其数据类型不同于原始列的数据类型的列的副本。 有关详细信息,请参阅派生列转换。
- 使用转换将列的数据类型从一种数据类型转换为另一种类型。 有关详细信息,请参阅数据转换。
注意: |
---|
布尔值是逻辑值而非数字。 虽然布尔值在某些环境中可能显示为数字,但它们并非以数字形式存储,而且不同的编程语言以不同的数值表示布尔值,.NET Framework 方法也是如此。 例如,Visual Basic 中可用的转换函数将 True 转换为 -1;但是 .NET Framework 中的 System.Convert.ToInt32 方法将 True 转换为 +1。Integration Services 表达式语言将 True 转换为 -1。 若要避免错误或意外结果,不应编写依赖 True 和 False 为特定数值的代码。 如果可能,应将布尔变量的使用限制为与其设计意图对应的逻辑值。 |
将 Integration Services 数据类型映射为数据库数据类型
下表提供了将特定数据库使用的数据类型映射为 Integration Services 数据类型的原则。 这些映射是从 SQL Server 导入和导出向导在从这些源中导入数据时使用的映射文件中汇总而来的。 有关这些映射文件的详细信息,请参阅使用 SQL Server 导入和导出向导创建包。
重要提示: |
---|
并不是说这些映射表示它们完全等同,而只是提供指导。 在某些情况下,最好使用不同于此表中所示的数据类型。 |
数据类型 | SQL Server (SQLOLEDB; SQLNCLI) | SQL Server (SqlClient) | Jet | Oracle (MSDAORA) | Oracle (OracleClient) | DB2 (DB2OLEDB) | DB2 (IBMDADB2) |
---|---|---|---|---|---|---|---|
DT_BOOL |
bit |
bit |
Bit |
||||
DT_BYTES |
binary、varbinary、timestamp |
binary、varbinary、timestamp |
BigBinary、VarBinary |
RAW |
RAW |
||
DT_CY |
smallmoney、money |
smallmoney、money |
Currency |
||||
DT_DATE |
|||||||
DT_DBDATE |
|||||||
DT_DBTIME |
|||||||
DT_DBTIMESTAMP |
datetime、smalldatetime |
datetime、smalldatetime |
DateTime |
TIMESTAMP、DATE、INTERVAL |
TIMESTAMP、DATE、INTERVAL |
TIME、TIMESTAMP、DATE |
TIME、TIMESTAMP、DATE |
DT_DECIMAL |
|||||||
DT_FILETIME |
|||||||
DT_GUID |
uniqueidentifier |
uniqueidentifier |
GUID |
||||
DT_I1 |
|||||||
DT_I2 |
smallint |
smallint |
Short |
SMALLINT |
SMALLINT |
||
DT_I4 |
int |
int |
Long |
INTEGER |
INTEGER |
||
DT_I8 |
bigint |
bigint |
BIGINT |
BIGINT |
|||
DT_NUMERIC |
decimal、numeric |
decimal、numeric |
Decimal |
NUMBER、INT |
NUMBER、INT |
DECIMAL、NUMERIC |
DECIMAL、NUMERIC |
DT_R4 |
real |
real |
Single |
REAL |
REAL |
||
DT_R8 |
float |
float |
Double |
FLOAT、REAL |
FLOAT、REAL |
FLOAT、DOUBLE |
FLOAT、DOUBLE |
DT_STR |
char、varchar |
VarChar |
CHAR、ROWID、VARCHAR2 |
CHAR、VARCHAR |
CHAR、VARCHAR |
||
DT_UI1 |
tinyint |
tinyint |
Byte |
||||
DT_UI2 |
|||||||
DT_UI4 |
|||||||
DT_UI8 |
|||||||
DT_WSTR |
nchar、nvarchar、sql_variant、xml |
char、varchar、nchar、nvarchar、sql_variant、xml |
LongText |
NVARCHAR2、NCHAR |
CHAR、ROWID、VARCHAR2、NVARCHAR2、NCHAR |
GRAPHIC、VARGRAPHIC |
GRAPHIC、VARGRAPHIC |
DT_IMAGE |
image |
image |
LongBinary |
LONG RAW、BLOB、LOBLOCATOR、BFILE、VARGRAPHIC、LONG VARGRAPHIC、用户定义 |
LONG RAW、BLOB、LOBLOCATOR、BFILE、VARGRAPHIC、LONG VARGRAPHIC、用户定义 |
CHAR () FOR BIT DATA、VARCHAR () FOR BIT DATA |
CHAR () FOR BIT DATA、VARCHAR () FOR BIT DATA、BLOB |
DT_NTEXT |
ntext |
text、ntext |
NCLOB、NVARCHAR、TEXT |
LONG、CLOB、NCLOB、NVARCHAR、TEXT |
LONG VARCHAR、NCHAR、NVARCHAR、TEXT |
LONG VARCHAR、DBCLOB、NCHAR、NVARCHAR、TEXT |
|
DT_TEXT |
text |
CLOB、LONG |
LONG VARCHAR FOR BIT DATA |
LONG VARCHAR FOR BIT DATA、CLOB |
有关在数据流中映射数据类型的信息,请参阅Mapping Data Types in the Data Flow。
请参阅
概念
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2007 年 9 月 15 日 |
|
2006 年 7 月 17 日 |
|
2005 年 12 月 5 日 |
|