У меня есть большой файл XML, который мне нужно импортировать и преобразовать в табличную структуру («свести») в SQL Server. Под «большим» я подразумеваю файл размером около 450 МБ, содержащий до 6-7 вложенных уровней и множество элементов, ~300.
Я попытался проанализировать файл с помощью OPENXML и Xml.Nodes. Оба метода медленные. Частичный запрос, который считывает родительский элемент и его вложенные внуки, выполняется несколько минут, если не десятков.
Я попытался использовать метод массовой загрузки SQLXML. К сожалению, я не мог - потому что файл неправильно структурирован. Существует элемент, который логически является родительским элементом, который физически не вложен как родитель.
Считаете ли вы, что единственным оставшимся решением является использование .NET или Java? Есть что-то, что мне не хватает?
В какой-то степени я бы предпочел динамическое решение. Я не хочу, чтобы разработчики SQL Server передавали процедурный, скомпилированный код, о котором они не имеют контроля/знаний, в случае, если произойдут некоторые изменения (в структуре XML).
Большое спасибо.
text()
в предложении значений также полезно для производительности. - person Mikael Eriksson   schedule 28.05.2014cross apply nodes()
. В вашем случае похоже, что первый вызов узлов должен быть уничтожен на пятом уровне, второй - на уровне восьмерок, а последнее перекрестное применение должно быть на девятом уровне. stackoverflow.com/a/22216941/569436 - person Mikael Eriksson   schedule 29.05.2014