Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Импорт xml-файла  [new]
Nelya_Kost
Member

Откуда:
Сообщений: 53
Добрый день! Застряла на месте по импорту xml-файла. Перелопатила форум и инет на эту тему, но дальше продвинуться не могу.
Итак, у меня есть xml-файл. Мне надо его импортировать в базу данных SQL Server 2008R2. Создала процедуру.
ALTER PROCEDURE [dbo].[imp]
AS
BEGIN
DECLARE @cmd varchar( 150)
DECLARE @cmd1 varchar( 150)
DECLARE @result int
create table table (Acc char(50),
	      Ser char(50),
	      Total char(50),
	      T1 char(50),
	      T2 char(50),
	      T3 char(50),
	      T4 char(50))

	      
	Set @cmd = 'bcp base.dbo.table  in "d:\sample.xml"   -c  -T'

EXEC @result = master..xp_cmdshell @cmd
END

При выполнении процедуры выходит ошибка
Error = [Microsoft][SQL Server Native Client 10.0]Unexpected EOF encountered in BCP data-file

Помогите, пожалуйста разобраться! Заранее спасибо!

К сообщению приложен файл (sample.xml - 396bytes) cкачать
28 мар 13, 07:33    [14105176]     Ответить | Цитировать Сообщить модератору
 Re: Импорт xml-файла  [new]
Nelya_Kost
Member

Откуда:
Сообщений: 53
второй вариант импорта тоже выдает ошибку.
Set @cmd = 'bcp base.dbo.table  in "d:\sample.xml" -fd:\sample.xsd -T'

Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Unexpected element schema found in xml format file at line 2 column 132.

Файл схемы.

К сообщению приложен файл (sample.xsd - 1Kb) cкачать
28 мар 13, 08:29    [14105238]     Ответить | Цитировать Сообщить модератору
 Re: Импорт xml-файла  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2996
не знаток BCP, но если Вы хотите, чтобы bcp импортнул xml-файл в придачу с распарсиванием, то он так не умеет
могу конечно и ошибаться и тогда коллеги меня поправят

в Вашем варианте возможно сделать так


CREATE TABLE table (Acc char(50),
	      Ser char(50),
	      Total char(50),
	      T1 char(50),
	      T2 char(50),
	      T3 char(50),
	      T4 char(50))
declare @xml xml

SELECT @xml = CAST(x.data as XML) FROM OPENROWSET(BULK 'тута путь', SINGLE_BLOB) AS x (data)

Insert Into table(Acc, Ser, Total, T1, T2, T3, T4)
SELECT
	x.col.value('(Acc)[1]', 'int')
	, x.col.value('(Ser)[1]', 'int')
	, x.col.value('(Total)[1]', 'int')
	, x.col.value('(T1)[1]', 'int')
	, x.col.value('(T2)[1]', 'int')
	, x.col.value('(T3)[1]', 'int')
	, x.col.value('(T4)[1]', 'int')
FROM
	@xml.nodes('/Data/Rec') x(col)

SELECT * FROM table
28 мар 13, 08:37    [14105253]     Ответить | Цитировать Сообщить модератору
 Re: Импорт xml-файла  [new]
Nelya_Kost
Member

Откуда:
Сообщений: 53
HandKot,
Спасибо огромное! Получилось! У меня 3-й был такой вариант с OpenRowSet, но там я тоже в тупик зашла.
28 мар 13, 09:14    [14105355]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить