OLE DB目标任务在值的末尾添加值

时间:2012-07-30 15:07:57

标签: sql-server sql-server-2008 ssis

当我尝试

时,简单的数据流会带来很多麻烦
  1. 从一列( oracle 9.2.0.8 )和
  2. 读取数据
  3. 直接将其写入oracle目标表(相同数据库)
  4. 导入的列( varchar2 25byte )如下所示:

    241200001
    151200001
    211200001
    161200001
    1231704383
    

    当我选择目标表的列( char 10byte )时,它看起来像这样:

    241200001
    151200001 3
    211200001 3
    161200001 3
    1231704383
    

    以下屏幕截图显示了source和destinatin之间的数据网格。这里看起来一切都很好。

    enter image description here

    接下来的截图显示,有零添加和结束,但不是到处都是。 (这是目标任务的预览窗口,但在TOAD中看起来相同)

    enter image description here


    检查值的长度会得到以下结果,这看起来很不错:

    Select
    id,
    length(id) as length
    from test_view
    
    
    ID                           LENGTH
    ------------------------- ----------
    42120001                           8
    23120001                           8
    22120001                           8
    26120001                           8
    25120001                           8
    22120001                           8
    22120001                           8
    23120001                           8
    18120001                           8
    18120001                           8
    1235800020                        10
    58120001                           8
    52120001                           8
    52120001                           8
    57120001                           8
    52120001                           8
    52120001                           8
    

    出于某种原因,最后添加了一个带有空格的值。我看到在1-3之间添加了值,我真的很想知道它来自何处。如果您担心目的地较短,则不会发生截断。当我将目标列设置为varchar2时,它可以工作,但我们需要保持原样。

    在数据流中,数据为string(25)。那么为什么这个目的地会出现问题?

    更新

    这很奇怪。我认为代码页警告不会导致此错误。输入数据看起来不错,而且包非常标准。这真的可能是驱动程序问题,还是目标任务的问题/错误?

1 个答案:

答案 0 :(得分:1)

尝试在数据流中使用派生列转换将varchar(25)显式转换为char(10) - 错误可能来自隐式转换,但未按预期工作。