Имя: Пароль:
IT
 
Загрузить данные из xml-файла в БД на SQL Server 2008
,
0 Триша
 
18.05.12
09:10
Раньше никогда не занималась такой проблемой.
Надо загрузить данные из xml-файла в таблицу БД на SQL Server 2008. Написала процедуру. Ошибка "Error connecting to the data source" в последней строке.
           SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class bl =
                   new SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class();
           bl.ConnectionString = "Provider=SQLOLEDB; Data Source=АА-SQL; Initial Catalog=DVP; User ID=РРРР\\хххх; Password=456456456";
           bl.SchemaGen = true;
           bl.SGDropTables = true;
           bl.KeepNulls = true;
           bl.Transaction = true;
           
           //bl.ErrorLogFile = "R:\\апап\\вава\\укук\\ук\\XMLDocForBulkLoad.err";

           Object vDataFile = "R:\\апап\\вава\\укук\\ук\\AS_SOCRBASE_20120307_c6125d29-dbfe-49bb-bb19-3c7f58a6589a.xml";

           bl.Execute("R:\\апап\\вава\\укук\\ук\\AS_SOCRBASE_2_250_06_04_01_01.xsd", vDataFile);

Что я сделала не так?
1 aleks-id
 
18.05.12
09:16
>> SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class
>> Пол: Женский
О_О

а по теме - конвертни в текст с разделителями и

BULK INSERT [BaseName].[dbo].[TableName]
FROM 'filename.txt'
WITH(DATAFILETYPE='char',FIELDTERMINATOR='символ-разделитель полей')
2 Триша
 
18.05.12
09:32
(1) Вот это вот О_О не поняла.
Как конвертировать?
3 БибиГон
 
18.05.12
09:36
(2) как загружаешь из xml?
   <Как конвертировать?
   excel вроде умеет.
4 Триша
 
18.05.12
09:41
(3) Файл-xml получен из интернета, файлов много, некоторые до 4 гб. Excel такие большие не открывает.
5 Irek-kazan
 
18.05.12
09:48
что за изврат, xml файлы по 4 гб? Или вы там весь интернет индексируете и выгружаете?
6 Триша
 
18.05.12
09:49
(5) это ФИАС, мы не причем
7 Irek-kazan
 
18.05.12
09:56
8 Триша
 
18.05.12
11:17
ошибку из (0) я победила, теперь другая ошибка: Schema: unable to load schema 'AS_SOCRBASE_2_250_06_04_01_01.xsd'.
Но схему-то не я придумала, она должна быть правильная, ее на официальном сайте ФИАС выложили.
9 Триша
 
18.05.12
12:39
тема актуальна
10 Irek-kazan
 
18.05.12
12:42
11 Триша
 
18.05.12
13:20
(10) ага, значит, чтобы работал SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class, нужна схема, сделанная специально для этого SQLXMLBulkLoad, а чтобы сделать такую схему, нужно сначала ее создать из таблицы в бд на sql server, положив в эту таблицу сначала данные, которые у меня есть только в виде файлов xml. ((( засада
12 Irek-kazan
 
18.05.12
13:21
(11) именно шулай, или возми одну строку с названиями полей создай в экселе, импортируй в базу с созданием таблицы, а потом выгрузи схему
13 Триша
 
18.05.12
13:29
(12) попробую, спасибо, только у меня не все файлы xml открываются.
14 Триша
 
21.05.12
16:13
Мда, после допила схемы получилось загрузить небольшой файл с помощью SQLXMLBulkLoad4Class.
15 sapphire
 
21.05.12
16:17
declare @doc XML
declare @idoc int
select @doc= (SELECT  top 1 BulkColumn FROM OPENROWSET(BULK '{filename.xml}',SINGLE_BLOB) AS x)
exec sp_xml_preparedocument @idoc OUTPUT,@doc
SELECT * FROM OPENXML (@idoc,'{XPath}') WITH( {Поле} {тип} {XPath})
16 sapphire
 
21.05.12
16:22
17 sapphire
 
21.05.12
16:23
Примеры использования:
http://msdn.microsoft.com/ru-ru/library/ms187897.aspx
18 sapphire
 
21.05.12
17:37
апну
19 sapphire
 
22.05.12
01:38
(0) Автор, тебе (16) и (17) помогло или дальше фигней страдать будешь?
20 Триша
 
22.05.12
08:39
(19) пока еще не пробовала. Но почему так категорично "фигней страдать"! Я изучаю разные возможности. С SQLXMLBulkLoad4Class ведь получилось. Можно теперь посмотреть другие варианты, сравнить.