none
INSERT DE VÁRIOS REGISTROS RRS feed

  • Pergunta

  • TENHO UMA LISTA COM VÁRIOS REGISTROS(CERCA DE 10.000).
    PRECISO FAZER UM INSERT EM UMA TABELA, POREM ANTES PRECISO VERIFICAR SE OS DADOS JÁ EXISTEM NA TABELA.
    O QUE VCS SUGEREM PARA QUE SEJA FEITO DA FORMA MAIS RÁPIDA POSSIVEL?
    OBRIGADO
    sábado, 28 de fevereiro de 2009 19:25

Todas as Respostas

  • Olá Biase.

    Aqui segue uma sugestão.

    insert into tabela_1 (id_1, coluna_A1, coluna_B1)  
    select id_2, coluna_A2, coluna_B2 from tabela_2 where id_2 not in (select id_1 from tabela_1) 

    Abs
    segunda-feira, 2 de março de 2009 12:03
  • Olá,

    Qual é a versão do seu SQL Server ?

    Caso esteja usando o 2008, existe a função Merge que permite realizar justamente este tipo de operação de uma forma simplificada.

    Dá uma olhada neste artigo de Nogare.

    http://www.linhadecodigo.com.br/Artigo.aspx?id=1653

    Abraços
    Demétrio Silva
    segunda-feira, 2 de março de 2009 13:43
  • utilizo o sql server 2005.
    segunda-feira, 2 de março de 2009 17:17
  • o problema é que os registros estao em uma lista genérica...
    segunda-feira, 2 de março de 2009 17:26
  • Olá,

    Mostra como você está passando a lista para o DB.

    Abraços


    Demétrio Silva
    segunda-feira, 2 de março de 2009 17:53
  • Biase,

    Veja este simples exemplo:

    1 Insert Into SuaTable (Codigo, Descricao)  
    2 Values(1,'Teste')  
    3 Go 1000 


    Este simples exemplo vai inserir de uma única vez 1000 linhas na table Suatable, no SQL Server 2005, vai adicionado ao comando GO a possibilidade de inserir várias linhas simultâneamente, talvez possa dar uma idéia de como você poderá fazer.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 2 de março de 2009 18:07
  •  Olá Júnior,

    Na verdade ele quer verificar se os registros existem antes de inserir, e não inserir muitos de vez.

    Abraços
    Demétrio Silva
    segunda-feira, 2 de março de 2009 18:40
  • Boa Noite,

    É uma pena que o SQL Server em questão seja o 2005, pois, o MERGE "é o comando" para atender sua necessidade.
    No caso, só nos resta fazer uma verificação antes e inserir o que ainda não está contemplado. Ex:

    INSERT INTO TabelaDestino (Campos)  
    SELECT <Campos> FROM TabelaOrigem  
    WHERE NOT EXISTS (  
    SELECT * FROM TabelaDestino WHERE 
    TabelaDestino.ChavePrimaria = TabelaOrigem.ChavePrimaria) 


    [ ]s,

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

    E se Chuck Norris fosse um DBA ? (Versão SQL Server)
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!392.entry
    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 3 de março de 2009 04:49