#sql #sql-server #xml #ssis
#sql #sql-сервер #xml #ssis
Вопрос:
У меня есть куча разных XML-файлов (более 100), и я пытаюсь передать их все в OLE DB через SSIS. Я начал с попытки использовать функцию Union All, но поскольку не все данные, которые входят в каждую строку базы данных, имеют один и тот же тип, некоторые значения вводятся SSIS как «ignore» и выводятся как null. Каждый источник xml также имеет несколько выходных данных, поэтому я пытаюсь избежать ручного указания каждого узла каждого источника xml на другой источник БД, а затем их объединения. Я знаю, что вы можете изменить тип ввода данных в источнике xml в разделе «Дополнительные параметры», но, похоже, нет способа по умолчанию использовать все для одного типа данных (string будет работать для меня). Есть ли способ использовать функцию объединения всех для работы со мной или лучший способ сделать это? Заранее спасибо.
Комментарии:
1. Все XML имеют одинаковую схему. Если они есть, вы можете использовать контейнер цикла foreach.
2. Нет, каждый XML-документ имеет другую схему
3. в настоящее время я не вижу никакого обходного пути, кроме ручного изменения типов данных в расширенной опции для каждого источника xml, или вы можете использовать script task и написать пользовательский скрипт для обработки этих источников xml в вашем коде с помощью LINQ.
4. Да, это то, что я предполагал. Я просто надеялся, что может быть лучший способ. Спасибо за вашу помощь.
Ответ №1:
Имеет ли ваш сервер доступ к папке, содержащей файлы xml? Если это так, использование SSIS для этого необязательно. Просто используйте OPENROWSET, также вы можете создать хранимую процедуру, которая выбирает данные из всех источников xml и объединяет все результаты. Этот SP вы можете использовать в своем пакете SSIS.
Комментарии:
1. Я использую задачу сценария в ssis для создания этих XML-документов, и сервер не имеет доступа к каталогу, в котором хранится xml.