我有一個類似於你的SSIS包,除了它遍歷Microsoft Project文件列表並將記錄導入數據庫。在Foreach循環容器中,它首先執行檢查以查看文件是否存在。我正在向腳本傳遞FileName的字符串變量和布爾變量bolFileExists。我知道你正在尋求也驗證文件的格式正確,我猜你可能能夠應用類似於下面的腳本任務代碼的東西:
public void Main()
{
if (File.Exists(Dts.Variables["FileName"].Value.ToString()))
{
Dts.Variables["bolFileExists"].Value = true;
}
else
{
Dts.Variables["bolFileExists"].Value = false;
}
}
從這個領導是兩個路徑。第一個應用表達式「@ bolFileExists == True」,然後執行導入過程。另一個會應用表達式「@ bolFileExists == False」並跳過該文件並允許處理下列文件。在表格驅動的SSIS包中,對於這兩個選項,導入狀態在列出正在導入的文件的表中定義。我有近40個導入的文件,這允許我運行一個查詢來確定是否有任何文件被遺漏,並在該過程完成後發送的自動電子郵件中應用該查詢。
至於不正確的格式,我的第一個建議是爲用戶提供一個模板,以遵循其中一個工作表中的指示。之後,您可以嘗試應用臨時表或SQL來收集感興趣的工作表中包含的列表或列數。你採取的方法取決於被拉的信息的複雜性。再次在我的SSIS包中,數據在導入後仍然可以關閉。在這種情況下,我首先將其導入臨時登臺表格,在該表格中執行檢查,然後只有符合感興趣標準的臨時登臺表格使用MERGE標準化爲最終登錄表格。
讓我知道如果您有任何問題。希望這有助於解決部分問題。