Usuário com melhor resposta
Quero pegar alguns campos do arquivo xml, e grava no banco de dados.

Pergunta
-
Quero pegar alguns valores de tags de arquivos XML e grava-las em campos de uma tabela no SQL Server, mas eu quero uma estrutura que percorra todo o diretório pegando arquivo por arquivo e fazendo o processo, alguém sabe se é possível implementar isso, algum tipo de estrutura que peque arquivo por arquivo no diretório e pegue os campos do XML que eu quero e jogue numa variável e depois na tabela.
Desde já agradeço.
Respostas
-
Você pode utilizar a procedure xp_cmdshell, para ler e armazenar em uma tabela os arquivos que existem no diretório.
Em seguida realiza um curso encima dessa tabela. Para que ela leia o PATH do arquivo , execute a leitura e inserção do arquivo XML na tabela que você desejar.
Abraço.
- Marcado como Resposta Gah222 terça-feira, 8 de outubro de 2013 18:20
-
Gah222,
Seguindo a linha de raciocínio do Marcelo, veja o código abaixo:
declare @Path varchar(128), @FileName varchar(128) select @Path = 'C:\' , @FileName = 'myfile.txt' declare @i int declare @File varchar(1000) select @File = @Path + @FileName exec master..xp_fileexist @File, @i out if @i = 1 print 'exists' else print 'not exists'
Utilizando a XP_CMDShell para outras situações:
Create Procedure P_RetornarIP @IP VarChar(25) Output As Begin Set NoCount On Declare @Auditoria2 Table (Codigo Int Identity(1,1), IP VarChar(2000)) Set RowCount 8 Insert Into @Auditoria2 exec master.dbo.xp_cmdshell 'ipconfig' Select @IP=(Select Replace(Substring(IP,CharIndex(':',IP,1),25),':','') from @Auditoria2 Where Codigo = 8) End Create Table Auditoria (Codigo Int Identity(1,1), HostName VarChar(20) Null) Declare @IP VarChar(25) Exec P_RetornarIP @IP OutPut Insert Into Auditoria Values (@IP) Select * from Auditoria
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
- Marcado como Resposta Gah222 terça-feira, 8 de outubro de 2013 18:20
Todas as Respostas
-
Você pode utilizar a procedure xp_cmdshell, para ler e armazenar em uma tabela os arquivos que existem no diretório.
Em seguida realiza um curso encima dessa tabela. Para que ela leia o PATH do arquivo , execute a leitura e inserção do arquivo XML na tabela que você desejar.
Abraço.
- Marcado como Resposta Gah222 terça-feira, 8 de outubro de 2013 18:20
-
Gah222,
Seguindo a linha de raciocínio do Marcelo, veja o código abaixo:
declare @Path varchar(128), @FileName varchar(128) select @Path = 'C:\' , @FileName = 'myfile.txt' declare @i int declare @File varchar(1000) select @File = @Path + @FileName exec master..xp_fileexist @File, @i out if @i = 1 print 'exists' else print 'not exists'
Utilizando a XP_CMDShell para outras situações:
Create Procedure P_RetornarIP @IP VarChar(25) Output As Begin Set NoCount On Declare @Auditoria2 Table (Codigo Int Identity(1,1), IP VarChar(2000)) Set RowCount 8 Insert Into @Auditoria2 exec master.dbo.xp_cmdshell 'ipconfig' Select @IP=(Select Replace(Substring(IP,CharIndex(':',IP,1),25),':','') from @Auditoria2 Where Codigo = 8) End Create Table Auditoria (Codigo Int Identity(1,1), HostName VarChar(20) Null) Declare @IP VarChar(25) Exec P_RetornarIP @IP OutPut Insert Into Auditoria Values (@IP) Select * from Auditoria
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
- Marcado como Resposta Gah222 terça-feira, 8 de outubro de 2013 18:20
-