none
Lendo planilhas do excel e inserindo no banco de dados.

    Question

  • Pessoal, eu tenho que criar uma processo ou um programa que vai ler planilhas do excel e gravar os dados no banco de dados.
    Eu já formatei a planilha com as colunas das tabelas, conforme eu preciso. A pergunta consiste no seguinte:

    1 - Devo fazer um programa em .Net (2.0 ou 3.0) o qual o usuario vai entrar abrir o programa e carregar a planilha e o código que eu sei fazer em C# vai ler e gravar os dados no SQL server ou é melhor eu subir os arquivos para o servidor com esse programa e la no servidor o SQL server com um job ( que eu não sei fazer) vai ler o arquivo do excel?

    2- se a melhor forma for usar um job do sql server, então como criar um processo de leitura  de arquivos de Excel com sql server ?

    obs: SQL server 2005
    tarcisiocorte
    Tuesday, January 26, 2010 10:56 AM

Answers

All replies

  • Bom Dia,

    Minha opinião pessoal é que devemos evitar construir aplicativos para efetuar um trabalho de ETL. Esses aplicativos normalmente têm um custo de manutenção elevado além serem normalmente pouco performáticos se comparados com ferramentas de ETL profissionais. Aplicativos para realizar ETL são muito "fechados" e normalmente difíceis de serem reaproveitados. Cada nova carga é quase que um novo aplicativo, pois, o layout, a origem ou o destino podem mudar.

    Acredito que a melhor forma de fazer é utilizando o SSIS. O link abaixo lhe mostrará como criar um pacote SSIS para fazer a importação. Posteriormente basta agendar um job para executá-lo.

    Usando o SSIS para importar várias planilhas de um mesmo arquivo Excel para o SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!591.entry

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    A quantidade de linhas fala por si só ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!926.entry
    Classifique as respostas. O seu feedback é imprescindível
    Tuesday, January 26, 2010 11:17 AM
  • Tarcísio,

    Estou de acordo com o Gustavo, acredito que existam recursos suficientes no SSIS que podem ser utilizados para atender a sua necessidade.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    Tuesday, January 26, 2010 3:35 PM
  • Bom dia,

    desculpe por ser meu primeiro post, mas achei interessante comentar

    Você pode utilizar a procedure de sistema sp_addlinkedserver
    Lembrando que as colunas que você precisa buscar ou inserir na planilha já devem existir

    Segue exemplo que fiz rapidinho :

    -- Usando Procedure
    
    exec sp_addlinkedserver
    @server = N'TesteExcel',
    @srvproduct = N'Jet 4.0',
    @provider = N'Microsoft.Jet.OLEDB.4.0',
    @datasrc = N'C:\Teste.xls', -- Caminho do Arquivo, pode ser utilizado \\ caso esteja na rede
    @provstr = 'EXCEL 5.0'
    
    -- Testando
    
    Select * From TesteExcel...Plan1$
    
    -- Testando insert
    
    INSERT INTO TesteExcel...Plan1$ (Col_A, Col_B, Col_C)
    VALUES (7, 8, 9)
    
    -- COM SELECT
    
    Create table dbo.Teste
    (
        Col_A int,
        Col_B int,
        Col_C int
    )
    
    INSERT INTO dbo.Teste (Col_A, Col_B, Col_C) VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9)
    
    
    -- INSERINDO NA PLANILHA
    
    INSERT INTO TesteExcel...Plan1$ (Col_A, Col_B, Col_C) Select Col_A, Col_B, Col_C FROM dbo.Teste
    Desculpe caso tenha escrito algo errado.

    Att,
    Wednesday, February 10, 2010 12:13 PM
  • Rodrigo,

    Obrigado pelo retorno.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    Wednesday, February 10, 2010 6:35 PM