我们有一个SSIS作业,它从数据库中获取数据并将其输出到csv文件并将其保存到文件共享。我们生成的csv中的最后一行是一个空行,该文件的使用者希望将其删除。在我们将文件写入目录之后,我需要弄清楚如何修改文件并删除最后一个空白行。我相信你可以在脚本任务中执行此操作,但我尝试过的所有内容都失败了,包括VB和C#。有没有人想出如何做这样的事情?
答案 0 :(得分:0)
我希望这可以起作用,因为我从臀部开始拍摄:
这应该删除最后一个回车和换行。
C#
string s = System.IO.File.ReadAllText([filePath]);
s=s.Substring(1,s.Length-2); //CRLF
System.IO.File.WriteAllText([filePath],s);
答案 1 :(得分:0)
您可以在数据流管道上的源和目标之间使用Conditional Split Transformation来删除空行。
在“分割变换编辑器”中,使用条件
指定布尔表达式LEN([Col 1]) > 0 && LEN([Col 2]) > 0 ...
奖励:如果输出文件中还有错误的数据,您可能希望以不同的长度进行过滤(如屏幕截图所示):Ref。
如果这仍然不起作用,我建议尝试使用C#脚本任务:
try
{
string input = System.IO.File.ReadAllText("path");
string output = System.Text.RegularExpressions.Regex.Replace(input, @"^\s+$[\r\n]*", "", System.Text.RegularExpressions.RegexOptions.Multiline);
System.IO.File.WriteAllText("path", output);
}
catch (Exception e)
{
//Log..
Dts.TaskResult = (int)ScriptResults.Failure;
}
如果您还想删除最后一个换行符,请使用上面的代码使用此模式:@"^\s+$[\r\n]*|[\r\n]$"