brajunaresh Ответов: 2

Вставка xml-данных в таблицу sql server


Привет,

у меня был один xml-файл в моем локальном механизме,т. е..
-<Processes> -<Process> <UserID>PW-IT\10819420</UserID> <MachineName>UTCIT-030</MachineName> <Date>21-05-2013</Date> <DocumentTitle>Importing XML file and insert data into SQL server table </DocumentTitle> <ApplicationName> Windows Internet Explorer provided by Infotech Enterprises Limited</ApplicationName> <StartTime>12:23</StartTime> <EndTime>12:24</EndTime> <Usage>1</Usage> </Process>



мне нужна помощь, чтобы вставить xml-данные в таблицу sql server непосредственно через запрос, может ли кто-нибудь мне помочь...

2 Ответов

Рейтинг:
4

Adarsh chauhan

Здравствуйте brajunaresh,

Вы можете попробовать это...

declare @xmldata as xml

set @xmldata= (SELECT CONVERT(XML, BulkColumn) AS BulkColumn
FROM OPENROWSET(BULK 'D:\a.xml', SINGLE_BLOB)as X)

or

select @xmldata = CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK 'D:\a.xml', SINGLE_BLOB)as X





счастливое кодирование :)


Рейтинг:
0

Aarti Meswania

DECLARE @xml xml
SET @xml = N'<Processes> 
<Process> <UserID>PW-IT\10819420</UserID> 
<MachineName>UTCIT-030</MachineName> 
<Date>21-05-2013</Date> 
<DocumentTitle>Importing XML file and insert data into SQL server table </DocumentTitle> 
<ApplicationName> Windows Internet Explorer provided by Infotech Enterprises Limited</ApplicationName>
 <StartTime>12:23</StartTime> 
 <EndTime>12:24</EndTime> 
 <Usage>1</Usage> 
 </Process></Processes> '


SELECT
 doc.col.value('UserID[1]', 'nvarchar(10)') UserID
,doc.col.value('MachineName[1]', 'varchar(100)') MachineName 
,doc.col.value('Date[1]', 'nvarchar(10)') Date 
,doc.col.value('DocumentTitle[1]', 'nvarchar(10)') DocumentTitle 
,doc.col.value('ApplicationName[1]', 'nvarchar(10)') ApplicationName 
,doc.col.value('StartTime[1]', 'nvarchar(10)') StartTime 
,doc.col.value('EndTime[1]', 'nvarchar(10)') EndTime 
,doc.col.value('Usage[1]', 'nvarchar(10)') Usage 
FROM @xml.nodes('/Processes/Process') doc(col)

Счастливого Кодирования!
:)


brajunaresh

привет Аати,
спасибо вам, но мне нужно передать локальный путь xml в запросе, тогда данные в xml будут вставлены в таблицу.

Выберите @xmlData = BulkColumn
ИЗ OPENROWSET
(Навальный 'D:\Process.xml',SINGLE_CLOB ) в качестве

Выберите UserID = a.value('(USERID/text())[1]','VARCHAR(100)'),
Machine_Name = a.value('(MAchineName/text())[1]','VARCHAR(100)'),
CurrentDate = a.value('(CurrentDate/text())[1]','VARCHAR(100)'),
Переменной documenttitle = а.значение('(переменной documenttitle/текст())[1]','типа varchar(100)')
от @данных XML.метод nodes('/процессов/процесса) х(а)

Aarti Meswania

вы посещали линк ?
http://www.mssqltips.com/sqlservertip/2899/importing-and-processing-data-from-xml-files-into-sql-server-tables/

brajunaresh

Привет Арти,
спасибо вам, он работает нормально, но в моем случае Process.xml у меня было много записей, которые можно напрямую загрузить в @XML, передав локальный путь к файлу

Aarti Meswania

ладно я не знаю но ты можешь просто поискать
"Как читать файл с помощью sql", а затем назначить файловые данные в переменной @xml

Member 11695004

можем ли мы вставить значение из параметра с помощью массовой вставки xml?
я хочу вставить все из xml и один столбец из параметра. для внешнего ключа предлагаю. могу я это сделать?