SSIS 文件验证
SSIS File Validation
我是 SSIS 新手。我在源位置有多个文件(平面文件)。
在检查每个文件时,SSIS 包需要确定文件是 .txt 还是 .csv 格式。如果任何文件不是 .txt 或 .csv 格式,则应将文件移至错误目录,并发送一封电子邮件,指出该文件的格式无效,对于每个无效的 file.The 电子邮件消息应包含文件名.
你能帮我找到解决办法吗?
提前致谢。
你可以这样做。
//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 中构建一个 table,其前导消息为 "The following table contains files that do not match the required format."
在 If 语句中,它还会将标识的文件移动到新目录。
完成 运行 这一步后,您可以将添加 html 的字符串变量分配给电子邮件步骤的正文。
我是 SSIS 新手。我在源位置有多个文件(平面文件)。 在检查每个文件时,SSIS 包需要确定文件是 .txt 还是 .csv 格式。如果任何文件不是 .txt 或 .csv 格式,则应将文件移至错误目录,并发送一封电子邮件,指出该文件的格式无效,对于每个无效的 file.The 电子邮件消息应包含文件名.
你能帮我找到解决办法吗?
提前致谢。
你可以这样做。
//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 中构建一个 table,其前导消息为 "The following table contains files that do not match the required format."
在 If 语句中,它还会将标识的文件移动到新目录。
完成 运行 这一步后,您可以将添加 html 的字符串变量分配给电子邮件步骤的正文。