powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка ФИАС через spXmlBulkLoad
23 сообщений из 73, страница 3 из 3
Загрузка ФИАС через spXmlBulkLoad
    #39604040
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604075
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
Жаль, но для этой процедуры нужны дополнительные разрешения на сервере. А это не в моей власти.
Попробовал сделать то же самое через VBS-скрипт:

Set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")
objBulkLoad.ConnectionString = _
"provider=SQLOLEDB;data source=VOLODJAVM\SQLEXPRESS;database=inetbuffer;" & _
"Integrated Security=SSPI;"
objBulkLoad.XMLFragment = True
objBulkLoad.ErrorLogFile = "E:\xmlerror.log"
objBulkLoad.Execute "e:\AS_ADDROBJ.xsd","e:\AS_ADDROBJ.xml"
Set objBulkLoad = Nothing
MsgBox "The SQLXMLBulkLoad process completed successfully",0,"XML Bulk Load Process"

Нашел на просторах.
Но и в этом случае облом. Похоже что-то снова с xsd. Брал и те, что на сайте ФИАС, и те что здесь выложены. Везде ошибка "Недопустимое имя объекта". Имя везде разное. По последнему xsd с этой ветки форума это ADDROBJ. Что-то за это время изменилось? Может кто поделится актуальным xsd?
Спасибо
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604079
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы в базе созданы?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604081
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604084
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думал они сами создадутся. Руками эти таблицы устанешь создавать. А скриптов тоже нигде не видел.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604088
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я если честно деталей уже не помню, ушли мы от прямого использования фиас на сервис https://dadata.ru
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604089
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wovan2,

оно их и создаст если вы объекту sqlXmlBulkLoad выставите свойство SchemaGen в True, ну и если схема правильная
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604097
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,
Спасибо. Продвинулся дальше.

Ошибка, все-таки в в xsd. Теперь скрипт пишет Определение столбца UPDATEDATE должно содержать тип данных\
В xsd записано
<xs:attribute name="UPDATEDATE" type="xs:date" use="required">

Нет типа xs:date?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604101
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините. Нашел ответ в начале этой ветки форума. (перечитал внимательней)
Странно Xsd брал здесь же, вроде как правленный.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604121
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эндиЯ думаю загрузка из xml на порядок быстрее загрузки dbf. Это достаточная причина?

С чего бы это? Не говоря о трате оперативной памяти.
dbf имеет записи фиксированной длины, не надо парсить структуру и т.д. Вычислительные затраты намного ниже.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604161
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал чисто экспериментальным путем, штатными методами sql server. Вот через sqlbulkload скорость просто зверская, уровнь bcp. А DBF через штатного провайдера замучаешься заливать.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604295
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас залил таб. ADDROBJ. Скорость около 6000 зап./сек.
Споткнулся на заливке HOUSE после 20 мин. работы вывалилась ошибка: Значение атрибута не должно содержать знак "<".
Что это? Ошибка в данных?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604306
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы просто сделал валидацию xml файла по схеме, там сразу будет видно где и что неверно и исходном xml вплоть до строки
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604333
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
энди,
Я тоже об этом думал. Но. Валидация файла в 22 Гб? И чем такой файл валидировать? Есть варианты.
И еще. Может у SQLXMLBulkload есть какой-то параметр для пропуска ошибочных записей?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604348
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я видел где-то код для sql Server проверки валидности xml файла по схеме, поищите, 100% было, и софтовые варианты были, но сходу в голову только xml spy приходит
а проверит вполне нормально, 20гб это еще даже не суровый объем :)
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39604377
Wovan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
энди,
XMLSpy и XMLPad при попытке открытия файла вываливаются Out of memory :-(
Этот ФИАС задолбал своими форматами. Вроде нащупал как с ними бороться, но облом. И не понятно в чем ошибка. В их файле или что-то у меня.
Неужели при массовой загрузке нельзя как-то обрабатывать ошибки ввода?
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39637175
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

При импорте любых таблиц ФИАС'а что скриптом,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Const CONNECT_STRING = "Provider=SQLOLEDB;Data Source=PROGERR;Database=FIAS;Integrated Security=SSPI"

Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")

objBL.ErrorLogFile = "C:\sample1.log"

' objBL.SchemaGen = True
' objBL.SGDropTables = True

objBL.CheckConstraints = True
objBL.KeepIdentity = False

objBL.ConnectionString = CONNECT_STRING

objBL.Execute "E:\Фиас\1\AS_SOCRBASE.xsd", "E:\Фиас\1\AS_SOCRBASE.XML"
Set objBL = Nothing


что с помощью процедуры spXMLBulkLoad
Код: sql
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
ALTER PROCEDURE [dbo].[spXMLBulkLoad] (
	 @@File		SysName
	,@@Schema	SysName
	,@@DataBase	SysName	--= '<DefaultDataBase>'
) AS BEGIN 

DECLARE	 @ErrCode	Int
	,@OLEXMLBulk	Int
	,@ErrMethod	SysName
	,@ErrSource	SysName
	,@ErrDescript	NVarChar(4000)
	
	SET @ErrSource = 'C:\XMLBulkError.xml'	--  файл ошибки (OPENROWSET требует константу)
	EXEC @ErrCode = sys.sp_OACreate 'SQLXMLBulkLoad.SQLXMLBulkload' ,@OLEXMLBulk OUT
	IF (@ErrCode = 0) BEGIN
		SET	@@DataBase	= 'Provider=SQLOLEDB;Data Source=.;DataBase=' + @@DataBase + ';Integrated Security=SSPI'
		EXEC @ErrCode = sys.sp_OASetProperty	@OLEXMLBulk ,'ConnectionString'	,@@DataBase		IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'ConnectionString'	GOTO Error END
		EXEC @ErrCode = sys.sp_OASetProperty	@OLEXMLBulk ,'ErrorLogFile'	,@ErrSource		IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'ErrorLogFile'	GOTO Error END
		EXEC @ErrCode = sys.sp_OASetProperty	@OLEXMLBulk ,'CheckConstraints'	,1			IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'CheckConstraints'	GOTO Error END
		
		EXEC @ErrCode = sys.sp_OAMethod		@OLEXMLBulk ,'Execute', NULL	,@@Schema, @@File
		IF (@ErrCode != 0) BEGIN
			SET @ErrMethod = 'Execute'
			DECLARE	 @Exist	Int
				,@Error	XML
			EXEC	master.dbo.xp_FileExist	@ErrSource, @Exist OUT
			IF (@Exist = 1) BEGIN
				SELECT	 @Error		= E.Error
							-- Обход глюка
							+ CASE	WHEN Right(E.Error,1) != '>'	THEN 'lt>'
								ELSE ''				END
				FROM	OPENROWSET(BULK 'C:\XMLBulkError.xml',SINGLE_NCLOB)E(Error) -- Из @ErrSource файла
				SELECT	@ErrDescript	= IsNull(@ErrDescript	,'') + E.Error.value('Description[1]','SysName') + ' '
				FROM	@Error.nodes('/Result/Error')E(Error)
				SELECT	@ErrDescript	= IsNull(@ErrDescript	,'') + E.Error.value('Description[1]','SysName') + ' '
				FROM	@Error.nodes('/Error/Record')E(Error)
			END ELSE
				GOTO Error
		END
		GOTO Destroy
	Error:	EXEC @ErrCode = sys.sp_OAGetErrorInfo	@OLEXMLBulk ,@ErrSource OUT ,@ErrDescript OUT
	Destroy:EXEC @ErrCode = sys.sp_OADestroy	@OLEXMLBulk
	END ELSE
		SELECT	 @ErrMethod	= 'SQLXMLBulkLoad.SQLXMLBulkload'
			,@ErrSource	= 'sp_OACreate'
			,@ErrDescript	= 'Ошибка создания OLE объекта'
	-- Вывод ошибок
	IF (@ErrMethod IS NOT NULL) BEGIN
		RAISERROR('Ошибка при выполнении метода "%s" в "%s": %s',18,1,@ErrMethod,@ErrSource,@ErrDescript)
		RETURN	@@Error
	END
END


получаю ошибку.

Например, при импорте простейшей AS_SOCRBASE, получаю такое.
Schema: relationship expected on 'AddressObjectType'.

Таблица создана
XSD и XML брал с сайта фиаса

Хелп, господа, помогите пройти затык?

SELECT @@version
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6220.0 (X64) Mar 19 2015 12:32:14 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
SQLXML 4.0 SP1
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39637238
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял все дело в кривоватых xsd схемах с сайта ФИАСа.

Господа, поделитесь, пожалуйста, правлеными схемами.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39637252
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на предыдушей странице посмотри, вроде выкладывали
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39637599
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди, спасибо, видел. К сожалению они не работали... пока я не допер и не сменил date->dateTime.
Да и не все схемы там.
Несколько (2-3) пришлось с ФИАСа брать и переделывать под SQL по аналогии.
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #39758463
DenisConqueror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NVT,
А не поделитесь схемами для загрузки?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Загрузка ФИАС через spXmlBulkLoad
    #40028363
DimaMorozov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Схемы пожалуйста
...
Рейтинг: 0 / 0
Загрузка ФИАС через spXmlBulkLoad
    #40028586
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
23 сообщений из 73, страница 3 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка ФИАС через spXmlBulkLoad
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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