我正在使用SSIS包从DB2源中提取数据,运行转换过程(unicode stuff),然后将数据存储在SQL表中。从下面的错误信息中,我已经能够确定DB2文件/表中存在某种特殊字符。我不知道的是我如何缩小哪个特定记录存在问题。 DB2文件中有大约200,000条记录,我需要知道哪一条特别导致了这个问题。
有没有办法查询DB2源代码,寻找“特殊字符”?有没有办法让SSIS包显示它失败的记录?
错误:2009-07-15 01:32:31.19
代码: 0xC020901C
来源:导入我的APP数据 详情[2670]
说明:有 输出列“COLUMN1”出错 (2710)输出“OLE DB源 输出“(2680)。列状态 返回的是:“文字被截断或 一个或多个字符没有匹配 目标代码页。“。
答案 0 :(得分:1)
DB2有一个名为HEX()的内置函数,它接受任何类型的任何表达式,并返回每个字节的十六进制表示的VARCHAR。您还可以通过在x'前加上x'来指定任何二进制值作为文字,例如:x'0123456789abcdef'
如果问题来自单字节字符,您可以通过构建从x'00'到x'ff'的所有单个字符的临时表来查找它,并查看哪些字符出现在DB2数据的每一行中。您还可以向实用程序添加一些代码,以转换Unicode的数据,以便它扫描DB2记录中的任何异常。