TableOne.txt (txt文件)
LoadNumber Name Address
101 Yogesh ABC
102 Zebra XYZ
103 Kattle BTMTableTwo.txt (txt文件)
LoadNumber Cost EName
101 240 Yogesh
105 500 Kavita
110 340 Kamal现在我想比较一下这些平面文件。1.我希望表2中没有的所有数据都是LoadNumber,而表1中没有的所有数据都是LoadNumber。
发布于 2014-01-17 08:36:31
1-通过平面文件源组件读取两个文本文件
2- 按LoadNumber排序
3-连接到合并连接 compnonent (连接类型:完全外部连接)并由TableOne.LoadNumber - TableTwo.LoadNumber连接
4-基于ISNULL()的条件拆分(tableXXXX.LoadNumber),例如,如果TableOne.LoadNumber为null,则table1中缺少null

发布于 2014-01-17 09:10:29
您可以在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-17 09:02:19
另一种方法可以是将两个平面文件加载到SQL表中,进入平面文件源,并使用执行SQL任务来连接这些表并获取数据。
使SSIS工作流稍微简单一些,但显然需要2个SQL表。
如果使用此方法,请不要忘记在开始时清除表。
https://stackoverflow.com/questions/21180080
复制相似问题