0

TableOne.txt(txt 文件)

LoadNumber  Name    Address
101         Yogesh  ABC
102         Zebra   XYZ
103         Kattle  BTM

TableTwo.txt(txt 文件)

LoadNumber  Cost    EName
101         240     Yogesh
105         500     Kavita
110         340     Kamal

现在我想比较这些平面文件。1. 我希望表二文本文件中不存在的所有数据为 LoadNumber,并且我希望表一文本文件中不存在的所有数据为 LoadNumber

4

3 回答 3

1

1-通过平面文件源组件读取两个文本文件

2-LoadNumber 对它们进行排序

3- 连接到Merge Join组件(连接类型:完全外连接)并通过 TableOne.LoadNumber - TableTwo.LoadNumber 连接

4-基于 ISNULL(tableXXXX.LoadNumber) 的条件拆分,例如,如果 TableOne.LoadNumber 为 null,则 table1 中缺少

在此处输入图像描述

于 2014-01-17T08:36:31.160 回答
1

您可以在 SSIS 脚本任务中执行 C# 脚本。参考:http ://www.java2s.com/Code/CSharp/File-Stream/Comparetwofiles.htm

using System; 
using System.IO;  

public class CompFiles {  
  public static void Main(string[] args) {  
    int i=0, j=0;  
    FileStream f1;  
    FileStream f2;  

    try {  
      // open first file 
      try {  
        f1 = new FileStream(args[0], FileMode.Open);  
      } catch(FileNotFoundException exc) {  
        Console.WriteLine(exc.Message);  
        return;  
      }  

      // open second file  
      try {  
        f2 = new FileStream(args[1], FileMode.Open);  
      } catch(FileNotFoundException exc) {  
        Console.WriteLine(exc.Message);  
        return;  
      }  
    } catch(IndexOutOfRangeException exc) {  
      Console.WriteLine(exc.Message + "\nUsage: CompFile f1 f2");  
      return;  
    }  

    // Compare files  
    try {  
      do {  
        i = f1.ReadByte();  
        j = f2.ReadByte();  
        if(i != j) break; 
      } while(i != -1 && j != -1);  
    } catch(IOException exc) {  
      Console.WriteLine(exc.Message);  
    }  
    if(i != j)  
      Console.WriteLine("Files differ."); 
    else 
      Console.WriteLine("Files are the same."); 

    f1.Close();  
    f2.Close();  
  }  
}
于 2014-01-17T09:10:29.803 回答
0

另一种方法可能是将两个平面文件加载到平面文件源中的 SQL 表中并使用执行 SQL 任务来加入表并获取数据。

使 SSIS 工作流程更简单一些,但显然需要 2 个 SQL 表。

如果您使用此方法,请不要忘记在开始时清除表格。

于 2014-01-17T09:02:19.443 回答