Импорт XML файлов с различными структурами с использованием служб SSIS - PullRequest
2 голосов
/ 08 февраля 2020

У меня есть несколько XML файлов с разными структурами, но все они имеют общий набор c узлов.

Моя цель - импортировать только эти взаимные узлы в таблицу SQL Server. Как я могу продолжить, зная, что не могу сгенерировать .Xsd для каждого типа, так как существует множество возможных вариантов XML файлов? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 09 февраля 2020

Простым решением было бы загрузить все эти XML файлы в таблицу XML (2 столбца: FileId и XmlData). Это можно сделать в качестве первого шага пакета.
Затем вы напишите хранимую процедуру, и она будет уничтожать XML из этой таблицы в ваших финальных таблицах. Эта хранимая процедура будет вызываться как 2-й шаг в пакете служб SSIS.

0 голосов
/ 18 февраля 2020

Итак, что я сделал в качестве решения этого конкретного случая: 1 - добавить скрипт C#, который читает файл xml и сохраняет только общие узлы и сохраняет их значения в моих переменных dts. 2 - вставьте в мою таблицу SQL Server только что заполненные переменные. Обе задачи были для каждого l oop до go через все файлы xml в указанном каталоге c. Надеюсь, это поможет!

0 голосов
/ 09 февраля 2020

Я не думаю, что это легко сделать с помощью SSIS .

Если у вас нет другого выбора, вы можете использовать Компонент сценария в качестве источника и проанализировать файлы XML с помощью сценария C# или VB. NET, а затем генерировать только выходные данные с нужными столбцами.

Для получения дополнительной информации об использовании компонента Script вы можете обратиться к следующим статьям:

Библиотека классов SchemaMapper

Некоторое время я работал над проектом под названием SchemaMapper. Это библиотека классов, разработанная с использованием C#. Вы можете использовать его для импорта табличных данных из XML и других форматов, имеющих различную структуру, в единую серверную таблицу SQL.

Вы можете обратиться к пошаговой инструкции в вики проекта:


Кроме того, не стесняйтесь проверить следующий ответ, он может дать вам некоторые идеи:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...