我在SSIS工作。我有一个衣衫褴褛的权利,管道分隔的文本文件。也就是说,每行的列数是可变的。而且,每行可以分类。对于第1列=“A”的行,它应该有5列。对于列1 =“B”的行,它应该有3列。此外,每列的数据类型因记录类型而异。例如,“A”记录的第2列是int,“B”记录的第2列是varchar(50)。
我正在尝试导入此文本文件并将每个记录类型放入其相应的表中。例如,所有“A”记录必须转到A_table,所有“B”记录必须转到B_table。
在我的数据流任务中,我需要将平面文件源带到OLE DB目标。当然,我的平面文件源配置为将所有数据压缩成1列(因为SSIS不允许平面文件源中的变量列)。从我到目前为止在线调查此方案,大多数人建议在平面文件源之后执行脚本任务。但是,这对我不起作用,因为在脚本任务解决方法方法中,我实际上采用具有最大列数的记录类型,为每个列定义输出,并将其用于所有记录。由于数据类型按记录类型更改,因此此解决方案对我不起作用。
所以,我的下一个最佳猜测是将平面文件源转换为条件分割。虽然我当然可以这样做,但我不知道如何将我的平面文件源(只有1列)发送到目标表(定义了多个列)。我该怎么做?
答案 0 :(得分:-1)
将管道标志设置为$(document).ready(function(){
var exp = getCookie("exp");
// Im assuming your getCookie function returns "" when cookie is not present
if(exp===""){
//set exp cookie
setCookie("exp", '0');
exp = 0;
} else {
// Just to make sure it's an integer I had to use parseInt()
exp = parseInt(exp)
}
$("#div").one("click",function(){
exp++;
//set the incremented value of expCookieCount variable to exp cookie
setCookie("exp", exp);
});
});
至Flat File Source
。确保它包含所有列,它通常采用第一行中的列。如果您的第一行只有2列,但其他行可以包含15列,那么您希望delimited
也包含15列。
将所有数据类型保留为字符串。
按不同类型拆分行。您现在可以为每种类型获得流量。 对于每个流/类型,创建数据转换和目标。