在数据流中使用数据类型

适用于:SQL Server Azure 数据工厂中的 SSIS Integration Runtime

在 Integration Services 中开发自定义数据流组件时,将数据复制到数据流缓冲区和从数据流缓冲区复制数据以及转换值的过程中,需要经常使用数据类型。 本主题中的信息有助于你选择正确的 Integration Services 数据类型,以及在使用这些数据类型时选择正确的方法。

将数据插入数据流

PipelineBuffer 类提供一系列将数据复制到缓冲区的 Set 方法,以及对应的一系列从缓冲区列检索数据的 Get 方法。 下表显示了与每种 Integration Services 数据类型相对应的方法。

用于各数据类型的 Set 方法

下表在第一列中列出数据类型,然后列出对应的 Set 和 Get 方法。

数据类型 Set 方法 Get 方法
DT_BOOL SetBoolean GetBoolean
DT_BYTES SetBytes GetBytes
DT_CY SetDecimal GetDecimal
DT_DATE SetDateTime GetDateTime
DT_DBDATE SetDate GetDate
DT_DBTIME SetTime GetTime
DT_DBTIME2 SetTime GetTime
DT_DBTIMESTAMP SetDateTime GetDateTime
DT_DBTIMESTAMP2 SetDateTime GetDateTime
DT_DBTIMESTAMPOFFSET SetDateTimeOffset GetDateTimeOffset
DT_DECIMAL SetDecimal GetDecimal
DT_FILETIME SetDateTime GetDateTime
DT_GUID SetGuid GetGuid
DT_I1 SetSByte GetSByte
DT_I2 SetInt16 GetInt16
DT_I4 SetInt32 GetInt32
DT_I8 SetInt64 GetInt64
DT_IMAGE AddBlobDataAddBlobData GetBlobData
DT_NTEXT AddBlobDataAddBlobData GetBlobData
DT_NULL SetNull 没有适用于此数据类型的 Get 方法。
DT_NUMERIC SetDecimal GetDecimal
DT_R4 SetSingle GetSingle
DT_R8 SetDouble GetDouble
DT_STR SetString GetString
DT_TEXT AddBlobDataAddBlobData GetBlobData
DT_UI1 SetByte GetByte
DT_UI2 SetUInt16 GetUInt16
DT_UI4 SetUInt32 GetUInt32
DT_UI8 SetUInt64 GetUInt64
DT_WSTR SetString GetString

用于各 Set 方法的数据类型

Set 方法 数据类型
AddBlobDataAddBlobData DT_IMAGEDT_NTEXTDT_TEXT
SetBoolean DT_BOOL
SetByte DT_UI1
SetBytes DT_BYTES
SetDate DT_DBDATE
SetDateTime DT_DATEDT_DBTIMESTAMPDT_DBTIMESTAMP2DT_FILETIME
SetDateTimeOffset DT_DBTIMESTAMPOFFSET
SetDecimal DT_CYDT_DECIMALDT_NUMERIC
SetDouble DT_R8
SetGuid DT_GUID
SetInt16 DT_I2
SetInt32 DT_I4
SetInt64 DT_I8
SetNull DT_NULL
SetSByte DT_I1
SetSingle DT_R4
SetString DT_STRDT_WSTR
SetTime DT_DBTIMEDT_DBTIME2
SetUInt16 DT_UI2
SetUInt32 DT_UI4
SetUInt64 DT_UI8

在数据流中映射数据类型

将数据从源经过转换移动到目标时,数据流组件有时必须在 DataType 枚举中定义的 SQL Server Integration Services 类型和在 System 命名空间中定义的 Microsoft .NET Framework 托管数据类型之间转换数据类型。 此外,组件有时必须先将一种 Integration Services 数据类型转换为另一种数据类型,然后才能将该类型转换为托管类型。

备注

默认情况下安装在 C:\Program Files\Microsoft SQL Server\130\DTS\MappingFiles 中的 XML 格式的映射文件与本主题中讨论的数据类型映射无关。 这些文件将数据类型从一个数据库版本或系统映射到另一个数据库版本或系统(例如,从 SQL Server 映射到 Oracle),并且只由 SQL Server 导入和导出向导使用。 有关这些映射文件的详细信息,请参阅 SQL Server 导入和导出向导

Integration Services 与托管数据类型之间的映射

BufferTypeToDataRecordTypeDataRecordTypeToBufferType 方法将 Integration Services 数据类型映射到托管数据类型。

注意

开发人员在使用 PipelineComponent 类的这些方法时应小心,并且可能需要编写更适合自己自定义组件的独特需求的数据类型映射方法代码。 现有方法不考虑数值精度或小数位数,或其他与数据类型本身紧密相关的属性。 Microsoft 在 Integration Services 的未来版本中,可能会修改或删除这些方法,或修改这些方法执行的映射。

下表列出了 BufferTypeToDataRecordTypeDataRecordTypeToBufferType 方法如何将各 Integration Services 数据类型映射到托管数据类型。

Integration Services 数据类型 映射到此托管数据类型
DT_WSTR System.String
DT_BYTES System.Byte 的数组
DT_DBTIMESTAMP System.DateTime
DT_DBTIMESTAMP2 System.DateTime
DT_DBTIMESTAMPOFFSET System.DateTimeOffset
DT_DBDATE System.DateTime
DT_DBTIME System.TimeSpan
DT_DBTIME2 System.TimeSpan
DT_DATE System.DateTime
DT_FILETIME System.DateTime
DT_NUMERIC System.Decimal
DT_GUID System.Guid
DT_I1 System.SByte
DT_I2 System.Int16
DT_I4 System.Int32
DT_I8 System.Int64
DT_BOOL System.Boolean
DT_R4 System.Single
DT_R8 System.Double
DT_UI1 System.Byte
DT_UI2 System.UInt16
DT_UI4 System.UInt32
DT_UI8 System.UInt64

映射 Integration Services 数据类型以适合托管数据类型

有时数据流组件还必须先将一种 Integration Services 数据类型转换为另一种数据类型,然后才能将该类型转换为托管类型。 ConvertBufferDataTypeToFitManaged 方法类将 Integration Services 数据类型映射到其他 Integration Services 数据类型,然后使用 BufferTypeToDataRecordType 方法将该数据类型映射到托管数据类型。

注意

开发人员在使用 PipelineComponent 类的这些方法时应小心,并且可能需要编写更适合自己自定义组件的独特需求的数据类型映射方法代码。 现有方法不考虑数值精度或小数位数,或其他与数据类型本身紧密相关的属性。 Microsoft 在 Integration Services 的未来版本中,可能会修改或删除这些方法,或修改这些方法执行的映射。

下表列出了 ConvertBufferDataTypeToFitManaged 方法如何将 Integration Services 数据类型映射到其他 Integration Services 数据类型。

原始 Integration Services 数据类型 映射到此 Integration Services 数据类型
DT_DECIMAL DT_NUMERIC
DT_CY DT_NUMERIC
DT_DATE DT_DBTIMESTAMP
DT_DBDATE DT_DBTIMESTAMP
DT_FILETIME DT_DBTIMESTAMP
DT_DBTIMESTAMP2 DT_DBTIMESTAMP
DT_DBTIME DT_DBTIME2
DT_BOOL DT_I4
DT_TEXT DT_WSTR
DT_NTEXT DT_WSTR
DT_STR DT_WSTR
DT_IMAGE DT_BYTES

注意

ConvertBufferDataTypeToFitManaged 方法不返回 DT_DBTIMESTAMPOFFSET 数据类型的值,并发生 UnsupportedBufferDataTypeException。 必须将 DT_DBTIMESTAMPOFFSET 数据类型转换为可映射到托管数据类型的一种 Integration Services 日期/时间数据类型。 有关可映射到托管数据类型的 Integration Services 日期/时间数据类型的列表,请参阅前面的部分“Integration Services 与托管数据类型之间的映射”中的表。若要了解如何转换数据类型,请参阅 Integration Services 数据类型

另请参阅

BufferTypeToDataRecordType
DataRecordTypeToBufferType
ConvertBufferDataTypeToFitManaged
Integration Services 数据类型