请建议您实施上述方案的想法。感谢!!!
答案 0 :(得分:1)
以下解决方案可以帮助您解决问题。
使用带有"Item" enumerator
的For each循环容器。由于你有10个文件,如果缺少你需要加注,那么你应该使用它。文件枚举器只是遍历文件,不会引发任何错误。
以下是步骤。
使用变量创建以下SSIS包。
对于每个循环,枚举器应配置为以下屏幕截图。
收集中的配置:
变量部分配置
容器内部有一个脚本任务。您必须提及FileFullPath
作为只读变量,并IsValidate
作为读取和写入,如下面的屏幕。
单击编辑脚本并插入以下代码。
public void Main()
{
Dts.Variables["IsValidated"].Value = true;
string fileFullPath = Dts.Variables["FileFullPath"].Value.ToString();
if (!File.Exists(fileFullPath))
{
var msg = String.Format("File is not available in location : {0}", fileFullPath);
Dts.Events.FireError(0, "Dat file loading", msg, string.Empty, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}
//Read last line
String lstLine = File.ReadLines(fileFullPath).Last();
int totalCount = 0;
bool talierExists = int.TryParse(lstLine, out totalCount);
if (!talierExists)
{
var msg = String.Format("No tailer row found and last line is : {0}", lstLine);
Dts.Events.FireError(0, "Dat file loading", msg, string.Empty, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}
//Total count
int fullCount = File.ReadLines(fileFullPath).Count();
if (fullCount != totalCount)
{
var msg = String.Format("No of count is not matching, tailer count = {0} and full count={1}");
Dts.Events.FireError(0, "Dat file loading", msg, string.Empty, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}
Dts.Variables["IsValidated"].Value = true;
Dts.TaskResult = (int)ScriptResults.Success;
}
之后有你的数据流。将脚本任务与数据流连接,然后右键单击连接器,然后进行编辑和配置,如下所示。
您的SSIS包将如下所示。
希望这有帮助!