我有一个按小时调度的SSIS包,每次该包都会生成一个平面文件(文本文件)。
是否有办法为每个生成的平面文件生成标题?
我考虑使用“UNION”合并两个平面文件(标题和正文),但我无法控制哪个文件先执行。
有什么想法吗?
是否有办法为每个生成的平面文件生成标题?
我考虑使用“UNION”合并两个平面文件(标题和正文),但我无法控制哪个文件先执行。
有什么想法吗?
在连接管理器中点击连接,将 "ColumnNamesInFirstDataRow" 设置为 True。
在我的SSIS中,实际上有一个名为“Header”的自定义属性。这对我非常有用。
* 刚刚发现您还可以使用属性[Flat File Destination].[Header]的表达式,并将其设置为数据流任务上的变量。
根据您的喜好,这可能更简单:
COPY HeaderFile.TXT + InputFile.TXT OUTPUT.TXT
以将文件粘合在一起如果您在文件末尾得到箭头字符,请改用以下内容:
COPY /B HeaderFile.TXT + InputFile.TXT OUTPUT.TXT
当然可以。使用脚本组件是我发现最简单的方法。我曾经尝试过使用平面文件目标将所需的数据写入文本文件,然后使用脚本任务附加头和尾。如果你喜欢,你也可以这样做。
我发现只需要一步就可以完成,即将数据流路由到脚本任务中,在PreExecute中编写标题,在ProcessInputRow中编写所有数据行,并在PostExecute中添加可选的页脚。
可以参考以下示例:
TextWriter tw;
public override void PreExecute()
{
base.PreExecute();
tw = new StreamWriter(Variables.requestFname);
tw.WriteLine("HEADER");
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
tw.WriteLine(Row.WhateverFieldsYouNeed);
}
public override void PostExecute()
{
base.PostExecute();
tw.WriteLine("FOOTER");
tw.Close();
}
你也可以使用数据流的属性。
转到控制流程页面 选择数据流组件的属性面板 进入表达式,选择 [Flat File Destination].[Header] 在这里,您可以动态设置此属性的值或不设置