[英]How to create SSIS script task to remove the CR LF from a flat file
我們有一個SSIS作業,該作業從數據庫獲取數據並將其輸出到csv文件並將其保存到文件共享。 我們生成的csv的最后一行是空白行,此文件的使用者希望將其刪除。 在將文件寫入目錄之后,我需要弄清楚如何修改文件並刪除最后一個空白行。 我相信您可以在腳本任務中執行此操作,但是我嘗試過的所有操作都失敗了,包括VB和C#。 有沒有人想出如何做這樣的事情?
我希望這能在我從臀部射擊時起作用:
這應該刪除最后的回車和換行。
C#
string s = System.IO.File.ReadAllText([filePath]);
s=s.Substring(1,s.Length-2); //CRLF
System.IO.File.WriteAllText([filePath],s);
您可以在數據流管道上的源和目標之間使用條件拆分轉換來刪除空行。
在分割轉換編輯器中,指定條件為
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]$"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.