用以前的数字列值填充的空数字列

时间:2014-01-16 07:15:39

标签: ssis

我有一个文本文件,其中包含多个表格数据(不同的列数)。我将整行导入为一列。基于条件拆分,行被分散到正确的流程。我使用脚本组件将单个列值(行)拆分为该表的正确列,并将其作为输出列。所有这一切都运行良好,数据看起来很好。

我的问题来自一些数字字段。当数字字段中没有值时,它会在表格中以另一列的数字值结束。

我已将数据查看器放在任何地方,其中没有一个列的数据应为空。当我查看表格本身时,它是来自另一列的数据。

  • 这不是映射,我检查了十几次。
  • 这些名称不是相同或类似名称。
  • 根据加载过程中的任何位置的数据查看器,都没有数据。
  • 任何地方都没有隐藏的代码。
  • 我下垂并重新创建了桌子。
  • 我显示了一个消息框,其中列(并且应该是空的)已分配"列值",并且没有数据,如预期的那样。
  • 我使用了派生列,结果相同,数据查看器中没有数据,但是表格中有eventualy数据。

我还创建了另一个测试表,其中这些数字字段为varchar。当我这样做时,列是空的(如预期的那样)。当我将其更改为数字时,将再次填充该字段。 (如果是我能理解的另一种方式)。

这有什么理由?这让我疯了。

修改

脚本代码:

 //C#
 public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
    ASCIIEncoding enc = new System.Text.ASCIIEncoding();
    char[] seperator = { '|' };
    Byte[] ByteBlob;
    String[] ColumnValue;
    ByteBlob = Row.Column0.GetBlobData(0, (int)(Row.Column0.Length));
    ColumnValue = enc.GetString(ByteBlob).Split(seperator);
    Row.OutputColumn0 = ColumnValue[0];
    Row.OutputColumn1 = ColumnValue[1];
///etc

只是举一个它的作用的例子,这就是一行中的行。

列名:

来源| TABLENAME |值1 |值2 |说明|值3 |说明2 |值4

实际数据:

ABC |收入| 123456 | 729537 | MisterX ||无|

表格中的数据:

ABC |收入| 123456 | 729537 | MisterX | 729537 |毫无| 729537

1 个答案:

答案 0 :(得分:1)

尝试使用Row.ColumnX_IsNull,例如if(Row.Column0_IsNull){youroutputcolumn = null} else {...}