Какова оптимальная практика при импорте и проверке файла XML в одной таблице (сведенной) в SQL Server?
У меня есть XML-файл, который содержит около 15 сложных типов, которые все связаны с одним родительским элементом.
Дизайн служб SSIS может выглядеть следующим образом:
Но со всеми этими (15) объединениями становится очень сложно.
Может быть, лучше написать код T-SQL для:
1) Импортируйте XML в столбец, который имеет тип XML и связан с XSD-схемой.
2) Используйте этот код:
TRUNCATE TABLE XML_Import
INSERT INTO XML_Import(ImportDateTime, XmlData)
SELECT GETDATE(), XmlData
FROM
(
SELECT *
FROM OPENROWSET (BULK 'c:\XML-Data.xml', SINGLE_BLOB) AS XMLDATA
) AS FileImport (XMLDATA)
delete from dbo.UserFlat
INSERT INTO dbo.UserFlat
SELECT
user.value('(UserIdentifier)', 'varchar(8)') as UserIdentifier,
user.value('(Emailaddress)', 'varchar(70)') as Emailaddress,
businessaddress.value('(Fax)', 'varchar(70)') as Fax,
employment.value('(EmploymentData)', 'varchar(8)') as EmploymentData,
-- More values here ...
FROM
XML_Import CROSS APPLY
XmlData.nodes('//user') AS User(user) CROSS APPLY
user.nodes('BusinessAddress') AS BusinessAddress(businessaddress) CROSS APPLY
user.nodes('Employment') AS Employment(employment)
-- More 'joins' here ...
для заполнения таблицы 'UserFlat'?
Некоторые недостатки заключаются в том, что вам приходится вводить SQL-код вручную, но преимущество в том, что у меня есть более прямой контроль над обработкой и преобразованием элементов. Но я не знаю, есть ли различия в производительности между обработкой XML в SSIS и обработкой XML с помощью операторов T-SQL XML.
Обратите внимание, что некоторые другие требования:
- Обработка ошибок: в случае ошибки человеку необходимо отправить электронное письмо.
- Может обрабатывать несколько входных файлов с определенным шаблоном имени файла: XML_ {date} _ {time} .xml
- Переместить обработанные файлы XML в другую папку.
Пожалуйста, совет.