在sql server中导入多个xml文件

时间:2013-07-18 19:01:06

标签: sql sql-server sql-server-2008

大家好,我想知道是否有人对此有任何见解。承担与我相当新的SQL服务器和学习,因为我去。

我有一个文件夹(C:\xml_files\),其中包含大约100多个xml文件。我想知道是否有办法上传此文件夹中的所有文件并将其显示在表中,其中每行代表不同文件的结果。所有xml文件的格式都相同。

我目前正在使用MS Sql Server 2012

1 个答案:

答案 0 :(得分:1)

让我们说以下是xml文件的结构:

<Books>
  <Book>
    <Title>Abzc</Title>
    <Pages>207</Pages>
  </Book>
  <Book>
    <Title>xyz</Title>
    <Pages>312</Pages>
  </Book>
  <Book>
   <Title>ghj</Title>
   <Pages>123</Pages>
  </Book>
</Books>

因此,您可以使用以下代码将其存储在数据库中:

declare @count int, @filename varchar(20)
set @count=1
while @count<4
begin  

   select @filename=filename from test4 where id=@count
   EXEC('INSERT INTO Books (Title, Book_Pages)
    select c3.value(''Title[1]'',''VARCHAR(100)''),
    c3.value(''Pages[1]'',''int'')  from(
    select  cast(c1 as xml)
    FROM OPENROWSET(
     BULK '''+@filename+''',SINGLE_BLOB) as T1(c1)
    )as T2(c2)
cross apply c2.nodes(''/Books/Book'') T3(c3)');
    set @count=@count+1
end