首页 > 解决方案 > 在 SSIS 2019 中面临查找转换的问题

问题描述

我正在使用 SSIS 2019 并具有如下所述的场景,我正在使用查找转换和匹配列的输出。

  1. 我需要检查文件是否存在
  2. 如果 File 存在,那么我需要将查找转换的输出与文件的内容进行比较,并跳过匹配的行,只考虑不匹配的行。3)如果文件不存在,那么我需要使用查找转换的输出并继续流程。

有人可以建议我们可以使用什么样的转换来实现上述功能。

1)我尝试使用脚本任务检查文件是否存在,如果成功使用另一个查找转换,但无法与上述查找转换的匹配列与文件行内容进行比较。

有人可以建议使用转换来实现数据流任务中的上述功能。

标签: ssisssis-2012

解决方案


我可以通过添加行号作为输出列作为数据流的第一步来做到这一点。然后我修改了脚本任务以满足我的以下条件。1)检查文件是否存在,然后将生成的行号与新临时文件上的行号进行比较,是否匹配跳过迭代并返回。2)如果没有找到匹配,则将数据插入 Db。将数据插入数据库后,我们将数据(行号和其他列)插入到新的临时文件中,我们使用行号进行比较。

这是代码片段

public override void Input0_ProcessInputRow(Input0Buffer Row)
    {

        try
        {
            if (ChecktempFileExists())
            {
                bool rowMatch = false;
                string tempFile = Variables.FTPTempFileName.ToString();
                
                string[] lines =File.ReadAllLines(tempFile);

                foreach (string line in lines)
                {
                    var values = line.Split(';');
                    if (Row.Rownumber.ToString() == values[0] && Row.ClientID == values[1] && Row.GroupNo == values[2])
                    {
                        rowMatch = true;
                        return;
                    }
                       
                   
                }
                if (!rowMatch)

                {
                   Validate(Row);

                    
                    CreateFormContext(Row);

                    if (Row.ErrorCode_IsNull == true || Row.ErrorCode.Length == 0)
                    {
                        Row.ErrorCode = "OK";
                        Row.ErrorDescription = "Successful";
                    }
                    else
                        Row.Id = 0;

                }

推荐阅读