SSIS 派生列将 numeric(6,0) 转换为 ANSI 字符串,删除前导数字
我有一个从 Oracle 数据源读取表的包。 SSIS 为表(标识列)的代理键分配了数字(6,0) 数据类型。
当我将该列放入派生列组件并将其转换为 (DT_STR,100,1252) 以存储在下游的查找表中时,字符串列会产生不正确的输出 - 但以一种非常奇怪的方式。
下面是一些示例输出:
ID ID_AS_STRING 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 0 11 11 12 12 . . 20 0 21 21 22 22 . . . 30 0 . . 40 0
基本上,如果 ID 能被 10 整除,它就会丢弃 ID 的前导数字(这种情况会持续到成百上千,即 740 变成 40,9920 变成 920。)
不用说,这是双重错误,因为它会错过一些用于查找的 ID,并创建其他 ID 的重复项。
如果将初始列数据类型更改为四位整数,它就可以正常工作,因此在某种程度上,这个问题只是学术性的。但是谁能解释一下 SSIS 中发生了什么事情,从而删除了 mod-10 数字的前导数字呢?
I have a package that's reading a table from an Oracle data source. The surrogate key for the table (an identity column) was assigned a numeric(6,0) data type by SSIS.
When I take that column into a Derived Column component and cast it as (DT_STR,100,1252) to store in a lookup table downstream, the string column produces incorrect output - but in a very strange way.
Here's some sample output:
ID ID_AS_STRING 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 0 11 11 12 12 . . 20 0 21 21 22 22 . . . 30 0 . . 40 0
Basically, it drops the leading digit of the ID if it's divisible by 10 (this goes on into the hundreds and thousands, i.e. 740 becomes 40, 9920 becomes 920.)
Needless to say, this is doubly wrong, since it misses some IDs for the lookup and creates duplicates of others.
If you change the initial column data type to four-bit integer it works fine, so in a way this question is merely academic. But can anyone explain what's going on in SSIS to drop that leading digit of a mod-10 number?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论