Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка ФИАС через spXmlBulkLoad / 25 сообщений из 73, страница 1 из 3
16.05.2014, 13:25
    #38643392
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Добрый день

Не сталкивался ли кто-нибудь с загрузкой БД ФИАС (новый классификатор адресов) в БД
Так как объемы 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
16.05.2014, 13:57
    #38643455
Zandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
энди,

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

Код: 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
16.05.2014, 14:24
    #38643502
Zandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
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
16.05.2014, 14:32
    #38643512
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Сделал как у вас

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



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



Если надо изменить:
Код: xml
1.
<xs:element name="ActualStatus" maxOccurs="unbounded" sql:relation="Название таблицы">
...
Рейтинг: 0 / 0
16.05.2014, 14:46
    #38643530
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Просто там если нормально не именовать зоопарк пойдет, например AddressObjects станут Object что согласитесь некрасиво, но так как Вы сразу сказали что сделать чтобы переименовать таблицу то вопрос решен, огромное спасибо :)
...
Рейтинг: 0 / 0
16.05.2014, 14:49
    #38643537
Zandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Незачто, рад что помогло :)
Проверяйте остальные схемы - там помнится тоже засады были...
...
Рейтинг: 0 / 0
16.05.2014, 14:51
    #38643539
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Да, уже натолкнулся на тип поля 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
16.05.2014, 14:55
    #38643544
Zandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
date -> dateTime
...
Рейтинг: 0 / 0
16.05.2014, 15:05
    #38643562
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Затыкаешь в одном месте, начинает падать в другом :)
Приложил фикс 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
16.05.2014, 15:25
    #38643602
Zandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
отправил на почту из профиля
...
Рейтинг: 0 / 0
16.05.2014, 15:33
    #38643618
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Огромное спасибо, уже попробовал, работает великолепно :)
Даже не буду заморачиваться дельтами, проще раз в месяц обновить БД.
У bulkload скорость отличная.
...
Рейтинг: 0 / 0
16.05.2014, 18:41
    #38643864
Infernal V. Raven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка ФИАС через spXmlBulkLoad
Zandr,

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

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

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

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

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

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

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


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