Преобразование XML-файлов из каталога (с использованием операции xslt) в ssis и перемещение их в новый каталог?

У меня есть куча файлов XML, которые я хотел преобразовать (с помощью операций XSLT) в SSIS (SQL Server 2014). Я создал свой xsl и могу преобразовывать файлы один за другим в нужный мне формат. Проблема в том, что я не могу понять, как сразу преобразовать и переместить файлы.

До сих пор я пробовал использовать контейнер цикла по каждому элементу, задачу XML и задачу файловой системы для выполнения этой работы (конечно, безуспешно). Я создал переменную для имен файлов.

Настроили контейнер цикла по каждому элементу, как показано ниже:

  1. Перечислитель по каждому файлу для перечислителя в перечислителе (вкладка Коллекция)

  2. Установите целевой каталог

  3. Сопоставил переменную FileName

Сконфигурировал задачу XML, как показано ниже:

Source ==> первый файл из исходной папки

Назначение ==> переменная FileName

SecondOperandType ==> XSL файл

Я не уверен, что делать дальше:

  • читать файлы из исходного каталога

  • преобразовать файлы один за другим

  • переместить преобразованные файлы в папку назначения

Я был бы очень благодарен, если бы кто-нибудь помог мне и указал мне правильное направление.


person M_Y    schedule 07.09.2019    source источник


Ответы (1)


Следующие ниже шаги помогут вам перебрать все xml-файлы в папках и подпапках, используя для каждого контейнера цикла.

  1. Возьмите контейнер цикла по каждому элементу из Toolbox
  2. Создайте четыре разных переменных. (Позаботьтесь о том, чтобы их объем должен был быть упаковкой, а не контейнером).
    2a. FilePath - DataType String - Value (Установить полный путь к XML-файлу, например c: \ data \ filexml.xml)
    2b. FileType - DataType String - Значение (* .xml)
    2c. FileFolderPath - DataType String - Значение (C: \ Data)
    2d. DestFolderPath - Строка типа данных - Значение (C: \ TransformedXMLFiles)
  3. Щелкните правой кнопкой мыши контейнер цикла Foreach и нажмите кнопку «Изменить».
  4. Появится редактор цикла по каждому элементу
    4a. Выберите коллекцию на левой панели.
    4b. На правой панели выберите перечислитель как Перечислитель по каждому файлу
    4c. Нажмите кнопку выражения eclipse (...) с тремя точками
    i. Выберите «Каталог» слева и установите переменную как @ [User :: FileFolderPath]
    ii. Выберите FileSpec слева и установите переменную как @ [User :: FileType]
    4d. Выберите «Полностью определено» в разделе «Получить имя файла»
    4e. Установите флажок «Перемещение по подпапкам», если вы хотите перемещаться по подпапкам.
    4f. На левой панели выберите Сопоставление переменных
    4g. В столбце переменных выберите переменную User :: FilePath, которая будет использоваться для перебора файлов в указанной папке и подпапке.
    4h. Поместите значение 0 (ноль) в столбец индекса
  5. Используйте исходный контейнер XML для каждого цикла
  6. Используйте операции XSD или XSLT
  7. Используйте задачу файловой системы, чтобы переместить файл от источника к месту назначения
person JIKEN    schedule 07.09.2019
comment
Спасибо, что нашли время и ответили на мой вопрос. но мне просто нужно немного пояснить шаг 5. В потоке управления нет исходного контейнера XML; Вы имели в виду контейнер задач XML? Если бы вы могли, дайте мне знать, как настроить контейнер задач XML. ура, Макс - person M_Y; 07.09.2019
comment
@M_Y - проверьте эту ссылку. mssqltips.com/sqlservertip/3141 / - person JIKEN; 07.09.2019
comment
Спасибо, что поделился этим @JIKEN, думаю, я не смог очень хорошо объяснить свой вопрос. Я хотел бы сгладить около 5000 вложенных XML-файлов с помощью операций XSLT. Я предполагаю, что в SSIS это (преобразование XSLT) можно выполнить только через контейнер задач XML, который я не уверен, как настроить в контейнере цикла по каждому элементу. Я ценю вашу помощь. - person M_Y; 07.09.2019