PDA

View Full Version : تبدیل فایل xml به sql



r_mehrizi
سه شنبه 21 اردیبهشت 1389, 13:36 عصر
من یه فایل xml دارم میخوام اون را به sql تبدیل کنم چه طوری باید این کار را انجام بدم

AminSobati
چهارشنبه 22 اردیبهشت 1389, 00:31 صبح
CREATE TABLE Load_XML_From_File(
Col1 INT IDENTITY,
Col2 XML
)
GO


INSERT Load_XML_From_File(Col2)
SELECT * FROM OPENROWSET
(BULK 'D:\Source.xml', SINGLE_CLOB) AS X

amir_alaki
چهارشنبه 22 اردیبهشت 1389, 09:44 صبح
با سلام اگه البته می خواین که یکم بیشتر از Insert انجام بدین مثلا قبل از Insert یک کنترلی هم بر روی اطلاعات داشته باشین میتونی از روش زیر استفاده کنین:



declare @Xml xml
set @Xml='<root>
<person>
<row>1</row>
<UserName>abas</UserName>
<UserPassword>123</UserPassword>
</person>
<person>
<row>2</row>
<UserName>abas2</UserName>
<UserPassword>321</UserPassword>
</person>
</root>'

Declare @count int
Declare @i int
set @i=1

select @count=count(T.c.value('UserName[1]','char(10)')) FROM @Xml.nodes('root/person') as T(c)

Declare @UserName char(10)
Declare @UserPassword char(10)

while (@i<=@count)
begin
select @UserName= T.c.value('UserName[1]','char(10)') FROM @Xml.nodes('root/person') as T(c) where T.c.value('row[1]','int')=@i
select @UserPassword= T.c.value('UserPassword[1]','char(10)') FROM @Xml.nodes('root/person') as T(c) where T.c.value('row[1]','int')=@i
insert into dbo.Users(UserName,UserPassword) values(@UserName,@UserPassword)
set @i=@i+1
end