2015-03-05 3 views
0

Я новичок в SSIS. У меня есть несколько файлов (плоских файлов) в исходном местоположении. При просмотре каждого файла пакет SSIS должен определить, являются ли файлы форматами .txt или .csv. Если какой-либо из файлов не является .txt или .csv, файлы следует перенести в каталог ошибок и отправить электронное письмо, в котором указывается, что файл имеет недопустимый формат для каждого недопустимого файла. Сообщение электронной почты должно содержать имя файла.Проверка SSIS-файла

Не могли бы вы помочь мне найти решение для этого?

Заранее спасибо.

+0

Прежде, чем я отвечу, вы знакомы с C#, и вам разрешено использовать задачи скрипта в вашем процессе. Я спрашиваю, потому что я знаю, что некоторые места очень непреклонны в использовании только встроенных инструментов при работе в ssis. – SFrejofsky

+0

Да, я знаком с C#, и мне разрешено использовать его. Благодаря! – Dhruba

ответ

0

Вы могли бы сделать что-то вроде этого.

 //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, в качестве тела вашего шага электронной почты.

+0

Я попробую это и дам вам знать. Огромное спасибо. – Dhruba

+0

без проблем. если вам нужно уточнить код, сообщите мне. – SFrejofsky

+0

Ещё один вопрос. Если нам нужно делать это с помощью инструмента, есть ли способ достичь этого? – Dhruba

Смежные вопросы