SQL Server Openrowset для чтения огромных XML-файлов за один шаг - PullRequest
4 голосов
/ 19 января 2011

Это мой первый пост за всю историю ... и мне очень нужна помощь по этому вопросу, поэтому любой, у кого есть знания по этому вопросу, - пожалуйста, помогите!

Что мне нужно сделать, это прочитать файл XML в таблицы данных сервера SQL. Я снова и снова искал решения для этого и нашел несколько действительно. Проблема заключается в размере загружаемого XML-файла. Он весит 2 ГБ (и будет 10 ГБ). Мне удалось это сделать, но я нашел одно конкретное решение, которое мне кажется удачным, но я не могу его найти.

Хорошо, давайте перейдем к сути. В настоящее время я делаю это так:

  • Я прочитал весь XML, используя openrowset, в переменную. (это занимает всю оперативную память ...)
  • далее я использую функцию .node (), чтобы извлечь данные и заполнить ими таблицы.

Это двухэтапный процесс. Мне было интересно, смогу ли я сделать это только за один шаг. Я видел, что есть такие вещи, как форматирование файлов, и есть множество примеров того, как его использовать для извлечения данных из плоских файлов или даже для превосходных документов в виде записей (вместо того, чтобы засосать все это в переменную), но я НЕ МОЖЕТ найти какой-либо пример, который показал бы, как читать этот огромный XML-файл в таблицу, анализирующую данные на лету (на основе файла формата). Это вообще возможно? Я был бы очень признателен за помощь или совет, где найти хороший пример.

Прошу прощения за мой английский - прошло много времени с тех пор, как я так много писал на этом языке :-) Заранее спасибо!

1 Ответ

5 голосов
/ 19 января 2011

Для очень больших файлов вы можете использовать SSIS: Загрузка данных XML в SQL Server 2008

Это дает вам гибкость преобразования данных XML, а также уменьшает объем используемой памятидля очень больших файлов.Конечно, это может быть медленнее по сравнению с использованием OPENROWSET в режиме BULK.

...