Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 在固定长度平面文件中,如何在没有标识符的情况下删除第一行和最后一行?_Ssis - Fatal编程技术网

Ssis 在固定长度平面文件中,如何在没有标识符的情况下删除第一行和最后一行?

Ssis 在固定长度平面文件中,如何在没有标识符的情况下删除第一行和最后一行?,ssis,Ssis,我有一个带有页眉和页脚的固定长度平面文件,但这些行没有任何标识符,比如H表示页眉,T表示尾部,D表示数据或类似于这些行的内容 我的所有数据都以位置1开始,但页眉和页脚以行格式中的不同位置开始。我尝试使用条件拆分,但无法得到想要的结果 请帮助我找到一些逻辑来从数据文件中获取页眉和页脚。我想将数据存储在SQL Server表中,将页眉/页脚数据存储在平面文件中以供将来参考。由于您的问题中没有包含确切的文件格式,让我们假设如下所示: This is the header line with s

我有一个带有页眉和页脚的固定长度平面文件,但这些行没有任何标识符,比如H表示页眉,T表示尾部,D表示数据或类似于这些行的内容

我的所有数据都以位置1开始,但页眉和页脚以行格式中的不同位置开始。我尝试使用条件拆分,但无法得到想要的结果


请帮助我找到一些逻辑来从数据文件中获取页眉和页脚。我想将数据存储在SQL Server表中,将页眉/页脚数据存储在平面文件中以供将来参考。

由于您的问题中没有包含确切的文件格式,让我们假设如下所示:

    This is the header line with some spaces at the beginning.
This, is, real, line 1
This, is, real, line 2
       End of file. It has some spaces too at the beginning.
如果这是对您的情况的正确表示,您可以使用平面文件源,在一列中完整地读取每条记录,例如EntireRow,然后使用条件拆分来使用以下条件标识页眉/页脚:

LEN(EntireRow) > LEN(TRIM(EntireRow))
这里的问题是如何分割有意义的行(上面示例中的实际行1和2)。您可以将其转储到另一个文件中。现在,此文件将被清除,并删除页眉和页脚。这是一个简单但不是最有效的解决方案

解决方案2:

更好的解决方案是使用脚本组件。了解如何动态添加行。例如:

现在,为了让您开始,一个示例代码将使用页眉/页脚不从位置1开始的条件来消除页眉/页脚。。。没有错误处理。上面的链接将告诉您如何添加输出以及该输出中的列。确保列的数据类型与源文件的数据类型匹配

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    /*
      Add your code here
    */

    if ((Row.EntireRow.Length == Row.EntireRow.Trim().Length))
    {
        string[] sArrFields = Row.EntireRow.Split(',');

        MeaningfulBuffer.AddRow();
        MeaningfulBuffer.Col1 = sArrFields[0];
        MeaningfulBuffer.Col2 = sArrFields[1];
        MeaningfulBuffer.Col3 = sArrFields[2];
        MeaningfulBuffer.Col4 = sArrFields[3];

    }
}

希望这些指导足以解决您的问题,我提供的两种解决方案中的一种能够奏效。请回复。

您应该向我们展示您的尝试,包括示例输入和预期输出。