在数据流中使用数据类型
适用于:SQL Server Azure 数据工厂中的 SSIS Integration Runtime
在 Integration Services 中开发自定义数据流组件时,将数据复制到数据流缓冲区和从数据流缓冲区复制数据以及转换值的过程中,需要经常使用数据类型。 本主题中的信息有助于你选择正确的 Integration Services 数据类型,以及在使用这些数据类型时选择正确的方法。
将数据插入数据流
PipelineBuffer 类提供一系列将数据复制到缓冲区的 Set 方法,以及对应的一系列从缓冲区列检索数据的 Get 方法。 下表显示了与每种 Integration Services 数据类型相对应的方法。
用于各数据类型的 Set 方法
下表在第一列中列出数据类型,然后列出对应的 Set 和 Get 方法。
用于各 Set 方法的数据类型
在数据流中映射数据类型
将数据从源经过转换移动到目标时,数据流组件有时必须在 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 与托管数据类型之间的映射
BufferTypeToDataRecordType 和 DataRecordTypeToBufferType 方法将 Integration Services 数据类型映射到托管数据类型。
注意
开发人员在使用 PipelineComponent 类的这些方法时应小心,并且可能需要编写更适合自己自定义组件的独特需求的数据类型映射方法代码。 现有方法不考虑数值精度或小数位数,或其他与数据类型本身紧密相关的属性。 Microsoft 在 Integration Services 的未来版本中,可能会修改或删除这些方法,或修改这些方法执行的映射。
下表列出了 BufferTypeToDataRecordType 和 DataRecordTypeToBufferType 方法如何将各 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 数据类型
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈