none
Import do Excel para SQL Server RRS feed

  • Pergunta

  • Caros, Amigos do Fórum

    Precisei criar um Sistema que recebera vários import do Excel para SQL Server 2005, já esta funcionando, porem precisava que o nome do arquivo fosse dinâmico, por que toda vez que o sistema recebe o arquivo Excel ele gera um nome, Exemplo: chamado_01, chamado_02, chamado_03, tentei criar uma variável e concatena-la no openrowset mais ocorre erro.

        Abaixo exemplo de como funciona   

         INSERT into CHAMADO_1
         SELECT
    * from OPENROWSET ('Microsoft.Jet.OleDB.4.0',
        
    'EXCEL 8.0;Database=D:\servidor\chamado.XLS', Plan1$);

     Abaixo exemplo de como precisaria, porem ocorre erro

         INSERT into CHAMADO_1
         SELECT
    * from OPENROWSET ('Microsoft.Jet.OleDB.4.0',
        
    'EXCEL 8.0;Database=D:\servidor\' @chamado, Plan1$);

    Alguém sabe como resolver este problema e poderia me ajudar, por favor! 

      

    terça-feira, 27 de maio de 2014 04:53

Respostas

  • Pessoal,

    Consegui resolver da seguinte maneira

    DECLARE
    
    @SQL NVARCHAR (MAX),
    @Chamado NVARCHAR (100)
    
    SET @chamado='Chamado_09';
    
    SET @SQL = 'SELECT * FROM OPENROWSET'
    SET @SQL = @SQL + '(''Microsoft.Jet.OleDB.4.0'',''EXCEL 8.0;Database=D:/servidor/'
    SET @SQL = @SQL + @Chamado                            
    SET @SQL = @SQL + ''','
    SET @SQL = @SQL +  'Plan1$)'
    
    exec (@sql)
    Espero que ajuda aos usuários que vem pesquisar

    terça-feira, 27 de maio de 2014 06:54

Todas as Respostas

  • Pessoal,

    Consegui resolver da seguinte maneira

    DECLARE
    
    @SQL NVARCHAR (MAX),
    @Chamado NVARCHAR (100)
    
    SET @chamado='Chamado_09';
    
    SET @SQL = 'SELECT * FROM OPENROWSET'
    SET @SQL = @SQL + '(''Microsoft.Jet.OleDB.4.0'',''EXCEL 8.0;Database=D:/servidor/'
    SET @SQL = @SQL + @Chamado                            
    SET @SQL = @SQL + ''','
    SET @SQL = @SQL +  'Plan1$)'
    
    exec (@sql)
    Espero que ajuda aos usuários que vem pesquisar

    terça-feira, 27 de maio de 2014 06:54
  • Carlos,

    Você esta trabalhando com Querys Dinâmicas, vale ressaltar que este tipo de implementação é muito interessante e versatile para o programador/desenvolvedor, mas por questões de seguração e principalmente para o SQL Server isso pode em alguns casos representar alguns riscos de segurança.

    Quando falamos de SQL Injection, prática muito conhecida principalmente no SQL Server 2000 e resultante de muitas análises e discussões, mas que foi totalmente tratada e refeita a partir do 2005.

    Sendo assim, vale tentar aplicar as melhores práticas, talvez este tipo de implementação possa tentar ser aplicada de otura forma.


    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]

    quarta-feira, 28 de maio de 2014 14:14
    Moderador
  • Junior,

     Muito obrigado pelo seu comentário, realmente muito bom!

    Se tiver outra sugestão ou dicas de como fazer esta carga ficaria muito grato.

    Este sistema ao qual estou trabalhando vai receber uma carga de dados através do Excel gerada por outra ferramenta ao qual nos foi negado o acesso ao banco de dados, o arquivo não vai ser manipulado pelo usuário, a ferramenta de terceiro vai gerar o arquivo e minha aplicação vai fazer a carga.

     já terminei o sistema de importação, mais tive que fazer algumas adaptações exemplo, o arquivo Excel de cerca de 120.000 linhas e 70 colunas, para fazer este importe precisei solicitar a divisão deste arquivo em duas partes de 65.000.

    Grato,

    Carlos Junior


      


    quinta-feira, 29 de maio de 2014 04:48