Итак, я использую SSIS (через VS), и у меня есть два сегмента, которые вешают трубку, когда мои клиенты не отправляют точные файлы каждый день.У меня есть задача, которая удаляет старые файлы, а затем переименовывает текущие файлы в имя файла с _OLD в конце.
Проблема заключается в следующем: если файлы, которые там находятся, не совпадают, происходит сбой, что приводит к сбою.
Пример: клиент отправляет в понедельник файлы: имена, адреса, оценки, школы. Тот же клиент во вторник отправляет: имена, адреса, школы
, поскольку файл оценок не 'Если он не существует, он все равно переименовывается в Grades_OLD, но SSIS завершается ошибкой.
Сценарии:
del Names_OLD.csv
bye
Это затем переходит к сценарию переименования:
ren Names.csv Names_OLD.csv
bye
и затем перейдет к адресам, чтобы сделать то же самое.Очень неприятно, что они терпят неудачу, когда на следующий день не существует ни одного файла, и, похоже, в этом нет необходимости.
У нас есть два сценария, которые генерируют архивные данные для обработки:
public void Main()
{
Dts.Variables["ARCHIVEFILE"].Value = Path.GetFileNameWithoutExtension(Dts.Variables["FTPFILE"].Value.ToString()) + "_OLD" + Path.GetExtension(Dts.Variables["FTPFILE"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
и
public void Main()
{
/*PSFTP_DEL_script.txt
del %1
bye
PSFTP_REN_script.txt
ren %1 %2
bye
*/
var lineOut = String.Empty;
var File1 = Dts.Variables["User::FTPWORKINGDIR"].Value.ToString() + "\\SSIS_PSFTP_DEL_script.txt";
var File2 = Dts.Variables["User::FTPWORKINGDIR"].Value.ToString() + "\\SSIS_PSFTP_REN_script.txt";
lineOut = "del " + Dts.Variables["User::ARCHIVEFILE"].Value.ToString() + Environment.NewLine + "bye";
System.IO.File.WriteAllText(File1, lineOut);
lineOut = "ren " + Dts.Variables["User::FTPFILE"].Value.ToString() + " " + Dts.Variables["User::ARCHIVEFILE"].Value.ToString() + Environment.NewLine + "bye";
System.IO.File.WriteAllText(File2, lineOut);
Dts.TaskResult = (int)ScriptResults.Success;
}
Исследование этого действительно не дает ничего полезного, и отчасти просто возвращает меня туда, где я сейчас нахожусь.