La solution que j'ai adoptée est ci-dessous. Je ne suis pas vraiment content à cause de la boucle et du fait qu'il a fallu un certain temps pour que ça fonctionne, quand on pense que ce genre de fonctionnalité pourrait être inclus et que je l'ai raté. Dans tous les cas, le SQL ci-dessous vous laisser avec une variable de table contenant le contenu de votre répertoire XML avec une ligne pour chaque fichier, une colonne contenant le nom du fichier et un autre contenant son contenu XML .:
declare @directory varchar(256) set @directory = 'C:\Temp'
declare @filecount int, @fileindex int, @linecount int, @lineindex int
declare @filename varchar(255), @arg varchar(512), @contents varchar(8000)
set @arg = 'dir ' + @directory + '\ /A-D /B'
declare @dir table ([filename] varchar(512))
insert @dir exec master.dbo.xp_cmdshell @arg
declare @files table (id int not null identity(1,1), [filename] varchar(512), [content] xml null)
insert into @files ([filename]) select [filename] from @dir where [filename] like '%.xml'
select @filecount = count(*) from @files
set @fileindex = 0
while @fileindex < @filecount begin
set @fileindex = @fileindex + 1
select @filename = @directory + '\' + [filename] from @files where id = @fileindex
set @contents = ''
set @arg = 'type ' + @filename
create table #lines(id int not null identity(1,1), line varchar(255))
insert into #lines exec master.dbo.xp_cmdshell @arg
select @linecount = count(*) from #lines
set @lineindex = 0
while @lineindex < @linecount begin
set @lineindex = @lineindex + 1
select @contents = @contents + line from #lines where Id = @lineindex
end
drop table #lines
update @files set [content] = @contents where id = @fileindex
end
select * from @files
go
Merci @Sandy, Je ne connaissais pas la fonctionnalité 'doc ("myxmlfile.xml") ...' décrite dans votre premier lien. Cela pourrait être utile ... – grenade
@grenade, Cool! mais est-il utilisé pour un seul fichier xml? – CoderHawk
Oui, mais je pense à une sorte d'itération ... – grenade