首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我将如何比较ssis中的两个平面文件?

我将如何比较ssis中的两个平面文件?
EN

Stack Overflow用户
提问于 2014-01-17 07:22:09
回答 3查看 6.3K关注 0票数 0

TableOne.txt (txt文件)

代码语言:javascript
复制
LoadNumber  Name    Address
101         Yogesh  ABC
102         Zebra   XYZ
103         Kattle  BTM

TableTwo.txt (txt文件)

代码语言:javascript
复制
LoadNumber  Cost    EName
101         240     Yogesh
105         500     Kavita
110         340     Kamal

现在我想比较一下这些平面文件。1.我希望表2中没有的所有数据都是LoadNumber,而表1中没有的所有数据都是LoadNumber。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-17 08:36:31

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

2- 按LoadNumber排序

3-连接到合并连接 compnonent (连接类型:完全外部连接)并由TableOne.LoadNumber - TableTwo.LoadNumber连接

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

票数 1
EN

Stack Overflow用户

发布于 2014-01-17 09:10:29

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

代码语言:javascript
复制
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();  
  }  
}
票数 1
EN

Stack Overflow用户

发布于 2014-01-17 09:02:19

另一种方法可以是将两个平面文件加载到SQL表中,进入平面文件源,并使用执行SQL任务来连接这些表并获取数据。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21180080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档