我有一個SSIS包,它有一個.csv文件作爲平面文件源。條件拆分根據ID將數據插入到各個SQL Server登臺表中。任何未成功插入的行都會重定向到錯誤.csv文件,每個ID一個。根據csv文件的行數移動文件
有了這些衆多的錯誤文件,我想對有多少行(除了標題行)進行評估。如果至少有一個數據錯誤行,這些行將通過發送電子郵件任務發送給源開發人員,否則將通過文件系統任務進行存檔。
我正在努力如何解決這個問題。我有一些想法,可以使用錯誤文件目錄中的Foreach循環容器循環並通過腳本任務執行行計數。但是,我不確定如何將單個文件名傳遞給腳本任務。此外,我不確定事後可以做有條件的電子郵件/文件系統任務移動。
在腳本任務方面,腳本任務的東西看起來像這樣(它是錯誤的),失敗的是它不會超過1並被歸檔,通過它被通過電子郵件發送,只是爲了某種想法。我對複雜的C#腳本頗爲新穎。
public void Main()
{
string folderPath = Dts.Variables["User::errorDirectory"].Value.ToString();
string archivePath = @"\\SERVER\placeholderfilepath\blah\blah";
var FileNames = new List<string>();
var FilePaths = new List<string>();
DirectoryInfo directoryInfo = new DirectoryInfo(folderPath);
FileInfo[] files = directoryInfo.GetFiles();
var lineCount = 0;
foreach (FileInfo fileInfo in files)
{
lineCount = File.ReadAllLines(fileInfo.FullName).Count();
//MessageBox.Show(lineCount.ToString());
if (lineCount == 1)
{
File.Move(folderPath, archivePath);
}
}
Dts.TaskResult = (int)ScriptResults.Success;
}
經過幾個小時的搜索後,我找不到任何涵蓋此內容的內容,因此會感謝任何指針/文章。
在此先感謝。
我曾考慮過這一點,但我想知道是否可以通過腳本更有效地完成比設置大量行計數變量。將會有10個這樣的文件啓動,並且我預計這個數字會隨着時間的推移而增加,所以想要做出這個面向未來的預測。 – TJB
是否考慮過對這些ID值的循環?在這種情況下,所有ID將重複使用相同的流程。或者你想發送一封包含所有錯誤.CSV的郵件? –
我真正想要的是評估目錄中的每個文件。如果RowCount大於1,則將文件保留在那裏,否則將其移至歸檔文件夾。我想遍歷目錄中的每個文件,打開它,執行行計數來完成此操作。郵件任務只會選取尚未移動的文件,因此這不是該位的問題。我正在努力的是一些腳本來讀取文件名的每個包變量,對行進行計數並決定是否對其進行存檔。 – TJB