【问题标题】:SSIS File ValidationSSIS 文件验证
【发布时间】:2015-05-07 01:39:06
【问题描述】:

我是 SSIS 的新手。我在源位置有多个文件(平面文件)。 在遍历每个文件时,SSIS 包需要确定文件是 .txt 还是 .csv 格式。如果任何文件不是 .txt 或 .csv 格式,则应将文件移动到错误目录并发送一封电子邮件,指出该文件的格式对于每个无效文件都是无效的。电子邮件应包含文件名。

您能帮我找到解决办法吗?

提前致谢。

【问题讨论】:

  • 在我回答之前,您是否熟悉 C#,或者您是否被允许在您的流程中使用脚本任务。我问是因为我知道有些地方非常坚持在 ssis 中工作时只使用内置工具。
  • 是的,我熟悉 C#,我可以使用它。谢谢!

标签: ssis


【解决方案1】:

你可以做这样的事情。

      //set string builder to create html for email. This will be 
      //set to a string variable in your ssis package
        System.Text.StringBuilder objMsg = new System.Text.StringBuilder();

        objMsg.Append("<html><head><style type='text/css'>table td {border: solid 1px black; padding-left: 10px; padding-right: 10px;}</style></head><body><div style='font-family: tahoma, geneva, verdana; font-size: 10pt;'>");
        objMsg.Append("<p>The following table contains files that do not match the required format.</p>");
        objMsg.Append("</div></body>");

      string[] files = Directory.GetFiles("directory");

        foreach (string file in files)
        {
            // if extension is invalid then append table for html email payload
            if (Path.GetExtension(file).ToLower() == ".txt" || Path.GetExtension(file).ToLower() == ".csv") 
            {
                objMsg.Append("<p style='margin-left: 30px;'>Details:</p><table style='margin-left: 30px; font-family: monospace; font-size: 9pt; text-align: right; width: 5in;'><tr style='background-color: silver; color: white; font-weight: bold;'><td style='width: 100%'>File Name</td></tr>");

                    objMsg.Append("<tr>");
                    objMsg.Append("<td>" + Path.GetFileName(file) + "</td>");
                    objMsg.Append("</tr>");
             File.Move(file, "errordirectory" + Path.GetFileName(file));
            }
        }
Dts.Variables["your user variable here"].value = objMsg.ToString();

对于我在工作时试图快速完成此操作的粗略格式,我深表歉意。

这将做的是遍历源目录中的文件并向字符串构建器对象添加一个条目,该对象最终将在 html 中构建一个表,并带有一条前导消息“下表包含与所需格式。”

在 If 语句中,它还将标识的文件移动到新目录。

运行此步骤后,您可以将添加 html 的字符串变量指定为电子邮件步骤的正文。

【讨论】:

  • 我会试试这个,让你知道。非常感谢。
  • 没问题。如果您需要澄清代码,请告诉我。
  • 还有一个问题。如果我们必须使用该工具,是否也有办法实现这一点?
  • 是的,但它要复杂得多,并且需要将短代码块中的每个步骤分解为一个单独的任务。即使您要将其分解为各个步骤,您仍可能需要使用脚本任务来构建电子邮件正文变量的 html。我不记得核心集中是否有类似的字符串构建工具
  • 我们必须添加脚本组件才能在平面文件源之后添加您提供的脚本对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多