在 SSIS 2019 中面临查找转换的问题
Posted
技术标签:
【中文标题】在 SSIS 2019 中面临查找转换的问题【英文标题】:Facing issue with LookUp transformation in SSIS 2019 【发布时间】:2021-12-21 18:36:37 【问题描述】:我正在使用 SSIS 2019 并具有如下所述的场景 我正在使用查找转换和匹配列的输出。
-
我需要检查文件是否存在
如果文件存在,那么我需要将查找转换的输出与文件的内容进行比较,并跳过匹配的行,只考虑不匹配的行。
3)如果文件不存在,那么我需要使用查找转换的输出并继续流程。
有人可以建议我们可以使用什么样的转换来实现上述功能。
1)我尝试使用脚本任务来检查文件是否存在,如果成功则使用另一个查找转换,但无法将上述查找转换的匹配列与文件行内容进行比较。
请有人建议使用转换来实现数据流任务中的上述功能。
【问题讨论】:
您有参考文件和其他一些数据(在数据库中)?假设文件存在,源数据来自?与参考数据进行比较,只有不匹配的数据会继续。如果该文件不存在,那么“使用查找转换的输出”的要求让我失去了。你能进一步解释你正在尝试做什么 源数据也来自文件,经过多次转换,当到达lookup1.lookup1时,匹配的输出被插入到Db中。在插入之前,我们需要对文件进行验证并使用文件中已经存在的数据进行过滤并跳过这些记录以避免插入错误。如果文件中没有记录,则直接插入数据库。希望你能得到我想要达到的目标。 【参考方案1】:我可以通过添加行号作为输出列作为数据流的第一步来做到这一点。 然后我修改了脚本任务以满足我的以下条件。 1)检查文件是否存在,然后将生成的行号与新临时文件上的行号进行比较,是否匹配跳过迭代并返回。 2)如果没有找到匹配,则将数据插入 Db。将数据插入数据库后,我们将数据(行号和其他列)插入到新的临时文件中,我们使用行号进行比较。
这里是代码 sn-p
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;
【讨论】:
以上是关于在 SSIS 2019 中面临查找转换的问题的主要内容,如果未能解决你的问题,请参考以下文章