Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
AnyKey45
Member

Откуда: Ekaterinburg-Moscow
Сообщений: 217
ПаWWWлОдАрЕц,

1 дом поделен на 2 отделения почты = разные индексы
24 июл 14, 08:44    [16349755]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Импорт фиаса через хп это эпик фэйл какой-то :)
Может кому пригодится http://codearticles.ru/articles/2403
26 июл 14, 23:48    [16362075]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 915
А что плохого в загрузке этих справочников через bulk?
Эту статья я думаю уже большинство людей кто интересовался загрузкой их в MSSQL уже давно видели.
27 июл 14, 13:35    [16362657]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
Einsof
Member

Откуда:
Сообщений: 11
А у меня печалька. Дельты в XML грузятся, а вот на загрузке полных XML падает на загрузке самомого большого файла HOUSE (14G!).
Использую SQLXMLBulkLoad:
<?xml version="1.0"?><Result State="FAILED"><Error><HResult>0xC00CEE26</HResult><Description><![CDATA[An attribute value must not contain '<'.
]]></Description><Source>XML SAX Parser</Source><Type>FATAL</Type></Error></Result>

То есть парсер якобы нашел незаэскейпленный '<'. Никто не сталкивался с таким ?
11 мар 15, 13:47    [17369819]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
foxwizard
Member

Откуда:
Сообщений: 302
Поделитесь исправленными xsd схемами ФИАС, пожалуйста.
12 апр 16, 08:25    [19045342]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
Сова
Member

Откуда:
Сообщений: 24
Дико извиняюсь, но не поделится ли кто-нибудь исправленными xsd-схемами?
4 май 16, 11:35    [19132626]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
XMLBulkLoad
Guest
Подскажите, пожалуйста, концепцию загрузки базы ФИАС в формате XML.

Известно, что данные предоставляются в двух вариантах: целиком на некоторую дату, либо апдейтами в виде дельта-файлов, содержащих добавления, изменения и удаления за период, определенный датой предыдущей выгрузки базы и текущей на момент данной выгрузки.

XMLBulkLoad загружает данные используя только вставку (поправьте, если не прав) и каждый раз очищать у себя базу FIAS только для загрузки целиком довольно накладно. Кто-то реализовывал слияние данных с использованием XMLBulkLoad (может триггерами на таблицы или как-то еще)? Интересно ваше мнение, как в данном случае можно было бы решить задачу дозаливки изменений, вместо полного переноса данных.
1 ноя 17, 18:05    [20919877]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
aleks222
Guest
У тя есть ажно два пути

1. .IgnoreDuplicateKeys = True
2. Грузить в tempdb + merge
1 ноя 17, 19:12    [20920014]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 915
1) никогда, повторяю, никогда не грузите xml сразу в рабочие таблицы!
2) ну а исходя из того что у вас есть и текущие рабочие таблицы и таблицы в которых есть обновление то что мешает проапдейтить одну таблицу из другой? по диффам не подскажу, не заморачивался, у меня не та нагрузка на БД была чтобы заморачиватся, ночью просто пускался джоб который обновлял рабочие таблицы
1 ноя 17, 19:15    [20920021]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
XMLBulkLoad
Guest
Спасибо за предложения, конечно речи о том, чтобы грузить в рабочие таблицы и не шло.

Удалось смоделировать такое решение:

XMLBulkLoad загружает данные в таблицы-пустышки, на которых имеются Instead Of Insert-триггеры. Данные в этих таблицах не хранятся, а триггеры осуществляют MERGE в таблицы данных. При этом у экземпляра класса SQLXMLBulkLoad нужно включить работу триггеров при вставке (FireTriggers = True).
2 ноя 17, 11:08    [20921308]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
XMLBulkLoad
Guest
Еще вариант: таблицы-пустышки можно заменить представлениями с теми же триггерами, но тогда у импортера нужно отключить генерацию таблиц (SchemaGen = False), иначе он будет пытаться создать таблицы, одноименные с этими представлениями.
2 ноя 17, 11:17    [20921347]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 915
Да ну, триггеры вообще не особо люблю, чем вас не устраивает прогруз в эти таблицы пустышки, а затем просто регулярно выполняемый job который скопирует и обновит данные как надо? Посути у вас триггер будет работать построчно, но опять же зачем если можно потом просто сделать UPDATE и обработать все строки сразу.
2 ноя 17, 11:35    [20921411]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
XMLBulkLoad
Guest
энди,
Да, вполне вариант с джобом, работать должен быстрее, но и требовать в два раза больше места под временное хранилище. Правда я вот джобы не очень люблю :), ибо их на сервере накопилось очень много. Можно после загрузки данных в таблицы запускать некую процедуру слияния.
2 ноя 17, 11:50    [20921466]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 915
почему в 2 раза? вы будете полную БД фиаса грузить или только diff-ы? Вторые явно меньше основной БД.
2 ноя 17, 11:54    [20921484]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
XMLBulkLoad
Guest
энди,

В два раза не по отношению ко всем данным, а только импортируемым... Хотя, конечно, хотелось бы не заморачиваться и сделать единый механизм как для начальной загрузки, так и для дельт. При этом полную заливку можно было бы сделать и ночью, тут скорость не критична. В будущем может понадобиться прибегнуть и к полной заливке повторно. Не очень хотелось бы делать это в полуручном режиме.
2 ноя 17, 12:04    [20921533]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 915
2 набора пустых таблиц для импорта.
1) создать джоб для diff, грузит данные из инета, распаковывает куда надо, загружает в пустые таблицы на сервере и обновляет данные рабочей БД
2) второй джоб аналогичен, только обновляет БД полностью.
3) настроить запуск первого типа обновления раз в 3 дня, второго скажем раз в квартал
2 ноя 17, 12:55    [20921696]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
XMLBulkLoad
Guest
энди,

Все же я проверил вашу гипотезу о том, что триггер срабатывает на каждую запись - она не верная. Триггер срабатывает сразу на все записи, похоже (или на какую-то большую пачку, размер которой весьма существенный). Ну и действительно, рассуждая логически: чтобы работать построчно XMLBulkLoad пришлось бы каждую запись отправлять отдельно, что драматически сказалось бы на быстродействии.

Существенных потерь при вставке через триггер я не обнаружил - все достаточно быстро, продолжаю реализацию без промежуточных хранений.
3 ноя 17, 11:49    [20924289]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
Fabyf
Member

Откуда:
Сообщений: 8
Прошу простить мою наглость, но очень очень нужны готовые, доработанные схемы XSD для ФИАС
Прошу Вашей помощи, если Вам не сложно выложите плз.
19 дек 17, 13:54    [21045477]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 393
Fabyf,

Прошлогодние есть. Не знаю, насколько актуальны они сейчас.
ФИАС
19 дек 17, 14:03    [21045537]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
Fabyf
Member

Откуда:
Сообщений: 8
ptr128,
Большое Вам спасибо!!!!
19 дек 17, 15:36    [21045976]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
KRS544
Member

Откуда:
Сообщений: 481
Владислав Колосов
Мы DBF загружаем, полет нормальный.

+1 Зачем с XML cсвязываться, когда DBF есть
23 дек 17, 22:30    [21057740]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
iii2
Member

Откуда:
Сообщений: 202
ptr128, спасибо!
25 дек 17, 08:21    [21059264]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 915
Я думаю загрузка из xml на порядок быстрее загрузки dbf. Это достаточная причина?
25 дек 17, 09:22    [21059348]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
правильный проходящий.
Guest
энди
загрузка из xml на порядок быстрее загрузки dbf.
И есть убедительные доказательства сего утверждения?
25 дек 17, 09:30    [21059359]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка ФИАС через spXmlBulkLoad  [new]
Wovan2
Member

Откуда:
Сообщений: 67
Извините, подниму тему.
Подскажите, а где, собственно, взять этот пресловутый spxmlbulkload? Набираю
EXEC spXmlBulkLoad 'e:\AS_ADDROBJ.XML', 'e:\AS_ADDROBJ.xsd', 'inetbuffer',
а в ответ
"Сообщение 2812, уровень 16, состояние 62, строка 13 Не удалось найти хранимую процедуру "spXmlBulkLoad".".
Где она прячется? На форумах и в статьях как-то все пространно расписано, а как и где запустить не понятно, либо, наоборот, так тривиально, что просто об этом и не упоминают.
Помогите, ткните носом. Спасибо.
19 фев 18, 10:52    [21201090]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить