Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Массовая загрузка XML-данных используя .NET  [new]
Kairat V. Beysenov
Member

Откуда: Astana City
Сообщений: 21
Входные данные: Из IBM MQ поступает около 1'000'000 xml файлов в сутки (размер каждой xml ~ 25 КБ), что составляет ~11 XML файлов с секунду. Для каждого типа xml файла имеется XSD-схема (примерно 50 типов XSD) и XDR-схема (соотношение полей xml к таблицам и полям).

Задача: Записать xml в MS SQL Server 2012. Записать не в поле типа xml, а каждое поле по отдельности (предварительно распарсив xml). После заливки данных собираемся получать аналитические и статистические отчеты.

Мое решение: Установил SQLXML 4.0 и прицепил к проекту Interop.SQLXMLBULKLOADLib. После чего имеем следующий код для импорта:
SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class objBl = new SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class();
objBl.ConnectionString = "Provider=sqloledb;server=localhost;database=dbtemp;integrated security=SSPI";
objBl.KeepIdentity = false;
objBl.Execute(@"D:\Temp\xdr.xdr", @"D:\Temp\xml.xml");


Вопрос: Имеет ли право на жизнь такое решение?

Примечание: Пытался реализовать через ADO.NET используя класс SqlBulkCopy в связки с SqlBulkCopyColumnMapping, но тут большое ограничение: если одну xml надо "размазать" по многим таблицам (например, по 10), будет 10 мелких инсертов, так как DestinationTableName для одного прохода только одна.

Основная проблема заключается в том что один xml файл необходимо разнести по нескольким таблицам.
1 ноя 12, 14:20    [13408707]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить