将BlobColumn转换为SSIS脚本组件中的字符串

Sre*_*har 14 sql ssis

我如何转换BlobColumnStringin SSIS Script Component.

例如:

Source Column : OrganisationProviderID NVARCHAR(MAX)

Destination Column : OrganisationProviderID VARCHAR(20)
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标SSIS Script Component

Dir*_*aus 34

这是我用来将BlobColumn转换为SSIS脚本组件中的字符串的函数

string BlobColumnToString(BlobColumn blobColumn)
{
    if (blobColumn.IsNull)
        return string.Empty;

    var blobLength = Convert.ToInt32(blobColumn.Length);
    var blobData = blobColumn.GetBlobData(0, blobLength);
    var stringData = System.Text.Encoding.Unicode.GetString(blobData);

    return stringData;
}
Run Code Online (Sandbox Code Playgroud)

  • 当我更改 var stringData = Encoding.Unicode.GetString(blobData); 时,此解决方案对我有用。到 var stringData = Encoding.Default.GetString(blobData); (2认同)

Jam*_*man 0

为什么要使用脚本组件呢?另外,我不确定 NVARCHAR(MAX) 是否真的符合 BLOB 列的资格。

如果您想将其作为数据流任务的一部分来执行,请在数据源上将数据访问模式设置为“SQL 命令”,然后使用以下命令文本:

select left(OrganisationProviderID,20) as OrganisationProviderID
from src
Run Code Online (Sandbox Code Playgroud)

然后将其链接到您的目标组件。

  • 我知道这是一个非常古老的问题/答案,但我只想在这里向其他人指出,是的,在使用 DFT ScriptTask 组件时,确实 NVARCHAR(MAX) 和 VARCHAR(MAX) 都被解释为名为 BlobColumn 的对象。不是选择,而是生成器产生的结果。因此需要将字节数组转换为字符串,并在某些情况下转换回字节数组以保存它。 (2认同)