2016-06-10 4 views
1

Я пытаюсь поместить XML-файл в таблицу SQL. Я успешно получил XML-файл в сервер SQL, используя следующий код:Вставка таблицы XML в таблицу SQL

declare @xmldata as xml 

set @xmldata = (SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn 
FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X) 

и следующий фрагмент кода, где я получаю сообщение об ошибке. Я знаю, что я должен использовать инструкцию INSERT INTO, но я не уверен, где я ошибаюсь.

INSERT INTO t1(c1, c2, c3) 
SELECT 
c1 AS 'c1', 
c2 AS 'c2', 
c3 as 'c3' 

Я в настоящее время с помощью SQL Server 2005.

файл XML выглядит следующим образом

<row> 
<c1> DATA </c1> 
<c2> DATA </c2> 
<c3> DATA </c3> 
</row> 
... 
+2

шоу ваша ошибка. и где зависимость между двумя вашими запросами? – xdd

+0

Недопустимое имя объекта 'BenCalCopy1'. –

+0

Я не вижу «BenCalCopy1» в любом месте вашего сообщения. Вы должны сказать нам, что вы делаете, если мы хотим вам помочь! – AakashM

ответ

0

С последнего комментария вы не обратиться к любому пользователю напрямую (например, с @Shnugo), поэтому не было никакой тревоги. Никто не нашел, что ваша правка очевидно ...

Не знаю, если это все еще остается открытым вопрос, но это был ответ:

Это путь вы загружаете файл

declare @xmldata as xml; 
set @xmldata = 
(
    SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn 
    FROM OPENROWSET (BULK 'filedestination', SINGLE_BLOB) as X 
); 

Теперь переменная @xmldata должна содержать XML, как вы разместили его в своем редактировании. Только для тестирования я установить переменную в некоторой подгонки содержания:

SET @xmldata= 
'<root> 
    <row> 
     <c1>DATA1</c1> 
     <c2>DATA2</c2> 
     <c3>DATA3</c3> 
    </row> 
    <row> 
     <c1>DATA4</c1> 
     <c2>DATA5</c2> 
     <c3>DATA6</c3> 
    </row> 
</root>'; 

Теперь создать временную таблицу для проверки Вкладыше

CREATE TABLE #t1(c1 VARCHAR(100),c2 VARCHAR(100),c3 VARCHAR(100)); 

И это способ вставки данных:

INSERT INTO #t1 
SELECT One.Rw.value('c1[1]','varchar(100)') 
     ,One.Rw.value('c2[1]','varchar(100)') 
     ,One.Rw.value('c3[1]','varchar(100)') 
FROM @xmldata.nodes('/root/row') AS One(Rw); 

SELECT * FROM #t1; 

GO 
DROP TABLE #t1; 

Это результат:

c1  c2  c3 
DATA1 DATA2 DATA3 
DATA4 DATA5 DATA6 
Смежные вопросы