powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка ФИАС через spXmlBulkLoad
25 сообщений из 73, страница 1 из 3
Загрузка ФИАС через spXmlBulkLoad
    #38643392
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день

Не сталкивался ли кто-нибудь с загрузкой БД ФИАС (новый классификатор адресов) в БД
Так как объемы XML файлов значительные то решил сделать через хранимку spXmlBulkLoad

Хранимку создал, XML библиотеку на сервере обновил до последней версии, ну и для проверки кинул один файлик и схему.
Вот содержимое файла
Код: xml
1.
<?xml version="1.0" encoding="utf-8"?><ActualStatuses><ActualStatus ACTSTATID="0" NAME="Не актуальный" /><ActualStatus ACTSTATID="1" NAME="Актуальный" /></ActualStatuses>



Вот файл схемы (взял с сайта ФИАС)
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:usch="http://www.unisoftware.ru/schematron-extensions" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="ActualStatuses">
		<xs:annotation>
			<xs:documentation>Состав и структура файла с информацией по статусу актуальности в БД ФИАС</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ActualStatus" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Статус актуальности ФИАС</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="ACTSTATID" use="required">
							<xs:annotation>
								<xs:documentation>Идентификатор статуса (ключ)</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="NAME" use="required">
							<xs:annotation>
								<xs:documentation>Наименование
0 – Не актуальный
1 – Актуальный (последняя запись по адресному объекту)
</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:minLength value="1"/>
									<xs:maxLength value="100"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>



Запускаю
Код: sql
1.
EXEC spXmlBulkLoad 'c:\31\xml\test.xml', 'c:\31\xsd\test.xsd', 'fias'


И получаю ошибку, явно видно что проблема в схеме, но куда порыть уму не приложу, писать схему с нуля, как-то не хочется, может кто-то уже сталкивался с подобной проблемой?

Код: sql
1.
2.
Msg 50000, Level 18, State 1, Procedure spXMLBulkLoad, Line 47
Ошибка при выполнении метода "Execute" в "c:\31\XMLBulkError.xml": Schema: relationship expected on 'ActualStatus'. 
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643455
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди,

Попробуй так:
Код: xml
1.
2.
3.
4.
	
...
	<xs:element name="ActualStatuses" sql:is-constant="1">
		...
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643464
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так уже пробовал, полдня промучился сам и только после этого в форум пошел, гугль у меня не забанен :)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
	<xs:element name="ActualStatuses" sql:is-constant="1">
		<xs:annotation>
			<xs:documentation>Состав и структура файла с информацией по статусу актуальности в БД ФИАС</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ActualStatus" maxOccurs="unbounded">



Хотя текст ошибки и меняется понять проблему с схемой я так и не смог.

Код: plsql
1.
2.
Msg 50000, Level 18, State 1, Procedure spXMLBulkLoad, Line 47
Ошибка при выполнении метода "Execute" в "c:\31\XMLBulkError.xml": Invalid object name 'ActualStatus'. 
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643502
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Invalid object name 'ActualStatus' - похоже что не создает таблицу...

У меня такая xsd (с sql:is-constant="1") работает, но я гружу через vbs скрипт:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim objBL 
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")
objBL.ConnectionString = "provider=SQLOLEDB;data source=ololo;database=fias;integrated security=SSPI"
objBL.ErrorLogFile = "c:\fias\error.log"

objBL.SchemaGen = True
objBL.SGDropTables = True

objBL.Execute "c:\fias\ACTSTAT.xsd", "c:\fias\AS_ACTSTAT.XML"
....

Set objBL = Nothing
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643512
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал как у вас

Код: plsql
1.
2.
SchemaGen = True
SGDropTables = True



В результате создалась таблица ActualStatus в которую и занеслись записи, проблема в том что таблица как я понимаю должна называться ActualStatuses :(
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643518
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с чего бы это?
Код: xml
1.
<xs:element name="ActualStatus" maxOccurs="unbounded">



Если надо изменить:
Код: xml
1.
<xs:element name="ActualStatus" maxOccurs="unbounded" sql:relation="Название таблицы">
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643530
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто там если нормально не именовать зоопарк пойдет, например AddressObjects станут Object что согласитесь некрасиво, но так как Вы сразу сказали что сделать чтобы переименовать таблицу то вопрос решен, огромное спасибо :)
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643537
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Незачто, рад что помогло :)
Проверяйте остальные схемы - там помнится тоже засады были...
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643539
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, уже натолкнулся на тип поля data в файле AS_ADDROBJ

Не жуется описание вот этого поля в схеме

Код: plsql
1.
2.
3.
4.
5.
6.
						
<xs:attribute name="UPDATEDATE" type="xs:date" use="required">
	<xs:annotation>
	<xs:documentation>Дата  внесения записи</xs:documentation>
	</xs:annotation>
</xs:attribute>
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643544
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
date -> dateTime
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643562
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Затыкаешь в одном месте, начинает падать в другом :)
Приложил фикс sql:is-constant="1", переименование таблицы и date->datetime и начало падать

Код: plsql
1.
2.
Msg 50000, Level 18, State 1, Procedure spXMLBulkLoad, Line 49
Ошибка при выполнении метода "Execute" в "c:\31\XMLBulkError.xml": Schema: unable to load schema 'AS_ADDROBJ.xsd'. An error occurred (AS_ADDROBJ.xsd#/schema/element[1][@name = 'AddressObjects']/c 



Вобщем я что-то не особо впечатлен этими xsd схемами от ФИАСа, не будет ли слишком наглым попросить Ваши уже выправленные схемы? :)
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643602
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отправил на почту из профиля
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643618
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо, уже попробовал, работает великолепно :)
Даже не буду заморачиваться дельтами, проще раз в месяц обновить БД.
У bulkload скорость отличная.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643864
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zandr,

а может тут выложишь?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643895
Фотография Ruuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди,

В ФИАС, кстати, Крым добавили?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38643896
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В понедельник узнаю :)
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38644268
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Infernal V. Raven,
Ок. В понедельник выложу.

Проверить на Крым и прочие адреса можно у ФИАСа на сайте:
http://fias.nalog.ru/Public/SearchPage.aspx?SearchState=2
(я так понимаю что у них там актуальная версия базы используется...)
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38644852
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть уже Крым в фиас, быстро однако
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38645017
Zandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38645262
Всем привет!
Тоже имею вопрос по ФИАСу

Никого не смущает дублирующиеся номера домов (с разными почтовыми индексами) по запросу:
Московская обл, Ступино г, Андропова ул?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38645297
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ладно, вы наверное забыли учесть поля STARTDATE & ENDDATE

SELECT * FROM dbo.House WHERE AOGUID='7542779a-a6d2-4344-ba5d-b30eb76342cf'
AND GETDATE() BETWEEN STARTDATE AND ENDDATE
ORDER BY HOUSENUM
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38645864
энди,

Да походу не только я, а еще и ОНИ сами забыли. У них на сайте тоже дубликаты выходят.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38645905
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бывает, там тоже люди работают :)
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38704130
badya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Сам сейчас столкнулся с задачей залива ФИАС в mysql, осложненной огромными объемами файлов. Подскажите, как xds помогает с этой проблемой справиться? Честно говоря не сильно большой специалист...
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #38704141
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы DBF загружаем, полет нормальный.
...
Рейтинг: 0 / 0
25 сообщений из 73, страница 1 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка ФИАС через spXmlBulkLoad
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]