vb.net - SSIS 自定义脚本 : loop over columns to concatenate values

标签 vb.net loops sha1 ssis

我正在尝试在 SSIS 2008 中创建一个自定义脚本,它将遍历选定的输入列并将它们连接起来,以便它们可用于创建 SHA1 哈希。我知道可用的自定义组件,但我无法在工作时将它们安装到我们的系统上。

虽然此处提出的示例似乎工作正常 http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/69766/当我测试了这个只选择了几个而不是所有的列时,我得到了奇怪的结果。该脚本似乎仅在所选列按顺序排列时才有效。即使它们是有序的,在如此多的记录或可能是下一个缓冲区之后,也会生成不同的 MD5 哈希,尽管我的测试数据中的行完全相同。

我已尝试将上一个链接中的代码与这些文章一起改编,但到目前为止我并不满意。 http://msdn.microsoft.com/en-us/library/ms136020.aspx
http://agilebi.com/jwelch/2007/06/03/xml-transformations-part-2/

作为起点,这可以很好地显示我选择用作输入的列名

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    For Each inputColumn As IDTSInputColumn100 In Me.ComponentMetaData.InputCollection(0).InputColumnCollection
        MsgBox(inputColumn.Name)
    Next
End Sub

在此基础上,我尝试使用以下代码获取值:

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Dim column As IDTSInputColumn100
    Dim rowType As Type = Row.GetType()
    Dim columnValue As PropertyInfo
    Dim testString As String = ""

    For Each column In Me.ComponentMetaData.InputCollection(0).InputColumnCollection
        columnValue = rowType.GetProperty(column.Name)
        testString += columnValue.GetValue(Row, Nothing).ToString()
    Next

    MsgBox(testString)

End Sub

不幸的是,这不起作用,我收到以下错误:

SSIS Error Message

虽然我对 VB.net 尤其是 SSIS 中的 VB.net 的了解有限,但我确信我想做的事情很容易实现,我正在努力。我可以单独定义列名称,如此处所示 http://timlaqua.com/2012/02/slowly-changing-dimensions-with-md5-hashes-in-ssis/尽管我想尝试一种动态方法。

最佳答案

您的问题是尝试对数据库中的 NULL 值运行 ToString()。

请尝试使用 Convert.ToString(columnValue),它只会返回一个空字符串。

关于vb.net - SSIS 自定义脚本 : loop over columns to concatenate values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216694/

相关文章:

c++ - 在调用中使用结构从 vb.net 调用

vb.net - JSON.Net VB 反序列化不起作用

perl - 如何在 Perl 的 for 循环中重命名文件

python - Python如何迭代一个for循环?

Java 和 python 没有获得相同的 sha-1 值

python - django-registration 和 sha1 作为哈希算法

.net - 其他 PC 无法识别的数据库格式

variables - 如何使用 VBA 遍历 MS Access 记录集并将变量分配给结果?

installation - Homebrew 软件 - 即使 SHA1 不匹配也强制安装

vb.net - 使用 Int 调用的不带参数的字符串函数应该会失败构建