2017-02-16 14 views
0

Мне нужно выбрать файлы по порядку (сначала первый файл), например, из папки (C: \ Users), а имя файла имеет метку времени. Ниже приведены мои файлы в C: \ Users \, а отметка времени - после первого подчеркивания, т.е. 20170126102806, в первом файле ниже. Мне нужно перебрать файлы и выбрать первый файл и так далее. поэтому из 5 файлов ниже, 20170123-000011_20170126101823_AAA - это первый файл. Как это сделать в SSIS?Выберите последний файл, основанный на отметке времени, указанной в файле

1.20170123-000011_20170126102806_AAA 
2.20170123-000011_20170126103251_AAA 
3.20170123-000011_20170126101823_AAA 
4.20170123-000011_20170126103305_AAA 
5.20170123-000011_20170126102641_AAA 
+0

Чтобы проверить, хотите ли вы обрабатывать файлы в определенном порядке, исправьте? Не могли бы вы показать файлы в том порядке, в котором вы хотите их обработать? –

ответ

0

Вы можете действовать двумя способами:

  • использовать контейнер цикл по каждому элементу, чтобы получить список файлов, а затем заполнить таблицу базы данных.
    Затем, вне цикла foreach, используйте Execute SQL для выбора из этой таблицы с помощью соответствующего ORDER BY.
    Загрузите переменную объекта в результирующий набор. Затем используйте второй цикл foreach для перехода через объект переменной и сбора файлов.
  • использовать задачу скрипта для извлечения содержимого папки (списка файлов) и сортировки файлов, а затем загрузить объектную переменную с помощью набора данных. Затем используйте цикл foreach для перехода через объект переменной для сбора файлов.

Я надеюсь, что эта помощь.

0

Вы можете использовать задачу сценария в каждой строке. Используйте имя файла, возвращаемое в качестве источника для загрузки каждый раз.

using System.IO;

public void Main() 
{ 
string filePath = "D:\\Temp"; 
DirectoryInfo dir = new DirectoryInfo(filePath); 
var files = dir.GetFiles("*_AAA");//Or from a variable 
DateTime fileCreateDate1 = File.GetCreationTime(filePath + "\\" + files[0]); 
     if (files.Length >= 2) 
     { 
      for (int i = 1; i < files.Length; i++) 
      { 
       DateTime fileCreateDate2 = File.GetCreationTime(filePath+ "\\" + files[i]); 

       if (fileCreateDate1 < fileCreateDate2) 
       { 
        fileCreateDate1 = fileCreateDate2; 
       } 
      } 
     } 

     Dts.Variables["User::FileToLoad"].Value = fileCreateDate1; 
     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

Вы должны удалить файл после того, как он был загружен или иначе он будет загружаться каждый раз, как он является самым старым или последний файл. Может быть ошибка или так, но с похожим кодом, который работает. Просто почистите его, если потребуется.

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

  • Нет связанных вопросов^_^