Модификация скрипта SSIS C# для получения времени создания файла в цикле / списке - PullRequest
1 голос
/ 16 апреля 2020

Я использую пакет служб SSIS с задачей «Сценарий», чтобы получить файлы не старше n дней, и он работает нормально, но теперь мне нужно перейти к следующему шагу CreatedTime для каждого файла. Ниже я вставил тело своего Это работает частично. Я просто не могу передать новую переменную в LastUpdated. Честно говоря, не знаю, как справиться с этой структурой, могу ли я добавить другое измерение в существующий список, чтобы создать другой список. Я планирую использовать * 1004. * так же, как FileNameArray. Tx много!)

        DataTable NewList = new DataTable();
        DataColumn col = new DataColumn("FileName");
        NewList.Columns.Add(col);
          DataColumn col2 = new DataColumn("LastUpdated", System.Type.GetType("System.DateTime"));
          NewList.Columns.Add(col2); 

        foreach (string f in MyDirFiles)
        {
            finf = new System.IO.FileInfo(f);
            if (finf.LastWriteTime > DateTime.Now.AddDays(-7)  )        
                )
            {
               NewList.Rows.Add(System.IO.Path.GetFileName(f) , 
                                System.IO.File.GetCreationTime(f));        
            }
        }
        Dts.Variables["User::FileNameArray"].Value = NewList.Columns["FileName"];  //<--- need convert into object
        ////**Dts.Variables["User::LastUpdated"].Value = NewList(xxx);  


        Dts.TaskResult = (int)ScriptResults.Success;

1 Ответ

1 голос
/ 16 апреля 2020

Из вашего кода и комментариев - можно сделать следующие выводы:

  • NewList2 переменная имеет тип DataTable (отсутствует в коде)
  • User:LastUpdated переменная пакета SSIS имеет DateTime тип

В этом случае - вы пытаетесь присвоить сложной структуре (DataTable) единственное значение DateTime переменной, что, безусловно, вызывает ошибку. Для этого измените тип User:LastUpdated на Object.

Можно расширить NewList таблицу, чтобы она содержала оба столбца, как в примере ниже

DataTable NewList = new DataTable();
DataColumn col = new DataColumn("FileName");
NewList.Columns.Add(col);
DataColumn col2 = new DataColumn("LastUpdated", System.Type.GetType("System.DateTime"));
NewList.Columns.Add(col2);

Добавление новой строки будет более неудобным.

DataRow newRow = NewList.NewRow();
newRow["FileName"] = System.IO.Path.GetFileName(f);
newRow["LastUpdated"] = System.IO.File.GetCreationTime(f);
NewList.Rows.Add(newRow);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...