У меня есть несколько файлов XML с разными структурами, но все они имеют определенный набор узлов.
Моя цель - импортировать только эти взаимные узлы в таблицу SQL Server. Как я могу продолжить, зная, что не могу сгенерировать .Xsd для каждого типа, так как существует много возможных вариантов XML-файлов? Заранее спасибо.
Всего 2 ответа
Я не думаю, что это легко сделать с помощью SSIS .
Если у вас нет других вариантов, вы можете использовать компонент Script в качестве источника и анализировать XML-файлы с помощью сценария C # или VB.NET, а затем генерировать выходные данные только с нужными столбцами.
Вы можете обратиться к следующим статьям для получения дополнительной информации об использовании компонента Script:
Некоторое время я работал над проектом под названием SchemaMapper. Это библиотека классов, разработанная с использованием C #. Вы можете использовать его для импорта табличных данных из XML и других форматов, имеющих различные структуры, в единую таблицу SQL-сервера.
Вы можете обратиться к вики проекта за пошаговым руководством:
Кроме того, не стесняйтесь проверить следующий ответ, он может дать вам некоторые идеи:
Простым решением было бы загрузить все эти файлы XML в таблицу XML (2 столбца: FileId и XmlData). Это можно сделать как 1-й шаг пакета.
Затем вы напишите хранимую процедуру, и она будет уничтожать XML из этой таблицы в ваши финальные таблицы. Эта хранимая процедура будет вызываться как 2-й шаг в пакете служб SSIS.