导入CSV - 将文件读入一列 - 现在没有列分隔符

时间:2013-01-28 17:37:14

标签: c# ssis

我正在使用SQL 2008r2 SSIS。在尝试处理可能具有不同列数的日志文件时,我决定将所有数据读入一列,然后解析该列。

我遇到的问题是我收到错误:

  

列"列0和#34;的列分隔符;找不到。

这让我相信它没有到脚本组件来解析列。

有没有人有任何想法?

文件配置

  • 标题行 - 最多50个字符的文本字段

  • 详细信息行 - 最多50个字符的整数和文本字段

原始规格 - 长达64列

新规格 - 可以是19或26或64或未知

解析代码:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    //Split Input string into string array
    string[] allValues = Row.Column1000.Split(',');

    int i = 0;

    //known Rows
    Row.Column0 = allValues[i++];
    Row.Column1 = allValues[i++];
    Row.Column2 = allValues[i++];
    Row.Column3 = allValues[i++];
    Row.Column4 = allValues[i++];
    Row.Column5 = allValues[i++];
    Row.Column6 = allValues[i++];
    Row.Column7 = allValues[i++];
    Row.Column8 = allValues[i++];
    Row.Column9 = allValues[i++];
    Row.Column10 = allValues[i++];

    //variable values - if column exists
    Row.Column11 = allValues.Length > i ? allValues[++i] : null;
    Row.Column12 = allValues.Length > i ? allValues[++i] : null;
    Row.Column13 = allValues.Length > i ? allValues[++i] : null;
    // etc
    Row.Column64 = allValues.Length > i ? allValues[++i] : null;
}

0 个答案:

没有答案