0

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

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

未找到列“列 0”的列分隔符。

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

有没有人有任何想法?

文件配置

  • 标题行 - 最多 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;
}
4

0 回答 0