none
Quero pegar alguns campos do arquivo xml, e grava no banco de dados. RRS feed

  • 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.


    sexta-feira, 4 de outubro de 2013 16:01

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
    sexta-feira, 4 de outubro de 2013 18:19
  • 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
    sábado, 5 de outubro de 2013 17:16

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
    sexta-feira, 4 de outubro de 2013 18:19
  • 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
    sábado, 5 de outubro de 2013 17:16
  • Obrigado aos dois pela ajuda!

    Abraço!
    terça-feira, 8 de outubro de 2013 18:20