我每周收到一个有50个列的竖线分隔的平面文件。我试图使用SSIS获取该文件,删除最后3列,然后将剩余的数据插入到新的管道分隔的平面文件中。起初我觉得这很简单,但我有一个固执的平面文件连接管理器。它使用额外的列不断恢复到入站文件布局,并且当出站文件需要以管道分隔时,还会继续返回逗号分隔文件。
我删除"的方式不需要的列只是从入站平面文件连接管理器中删除它们,因此它们不会在平面文件源的输出列中列出,并且它们不会显示在输入列的输入列上平面文件目的地。
这两个文件的文件名都是动态的...不确定是否与它有关。
我将延迟验证设置为true,但我不确定还要尝试什么。我还尝试删除所有内容并添加回连接管理器和文件。
是否存在2个平面文件连接管理器的问题,一个用于源,一个用于目标?我缺少一个设置吗?
答案 0 :(得分:2)
您的目的地现在不应该包含这些列。
如果平面文件连接似乎由于动态名称而重置,请考虑将它们作为表达式/变量提供。
为此,请单击源/目标的连接管理器节点(而不是数据流节点),然后在“属性”中,展开“表达式”。您需要通过变量生成var details =['session', 'dates','faculty', 'hours'];
var cartArray = $('.cartItemDetail').map(function(){
var $cartElem = $(this);
var data ={
item_id: $cartElem.data('item_id')
}
$.each(details, function(i, className){
data[className] = $cartElem.find('.'+className).text();
});
return data
}).get();
动态。
答案 1 :(得分:0)
你是什么意思
它不断恢复到带有额外列的入站文件布局,并且当出站文件需要以管道分隔时,还会继续返回逗号分隔文件。
您是否尝试过直接引用该文件,然后设置文件类型(右侧,分隔或固定宽度),然后将表达式应用于连接管理器的connectionstring属性?
我建议衣衫褴褛,我可以指定我想要的任何'列'和宽度。