none
Transferir dados de um banco pro outro (Sql Server) RRS feed

  • Pergunta

  • Tenho uma tabela Usuários no banco de dados A, quero inserir todos os Usuários cadastrados no banco de dados A no banco de dados B onde sera inserido na tabela Pessoas.

    OBS: Nomes dos campos podem ser diferentes um do outro


    Atenciosamente,
    José Henrique Sabino

    quarta-feira, 4 de fevereiro de 2015 18:40

Respostas

  • SE os bancos estão no mesmo servidor, o processo é bem simples:

    INSERT INTO BancoA.dbo.Usuarios (Campo2A, Campo2B)
    SELECT Campo1A, Campo1BB
    FROM BancoA.dbo.Usuarios

    OBSERVAÇÕES:

    - No exemplo utilizei "dbo", já que não sei se há algum schema definido.

    Espero ter ajudado

    Abs

    • Marcado como Resposta Xarp2 quinta-feira, 5 de fevereiro de 2015 11:10
    quarta-feira, 4 de fevereiro de 2015 18:53
  • José, boa tarde.

    As bases estão na mesma instância? Se sim, basta fazer um

    INSERT INTO BancoDadosB..Pessoas
    (lista campos)
    SELECT <Lista campos> 
    FROM BancoDadosA..Usuários
    

    Se elas estiverem em servidores diferentes, eu faria um pacote do Integration Services para a cópia, ou usaria o Import/Export no próprio SQL Server Management Studio.

    Isso te ajuda?



    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    • Sugerido como Resposta Roberto F FonsecaModerator quarta-feira, 4 de fevereiro de 2015 19:10
    • Marcado como Resposta Xarp2 quinta-feira, 5 de fevereiro de 2015 11:10
    quarta-feira, 4 de fevereiro de 2015 18:56
  • SE os bancos estão no mesmo servidor, o processo é bem simples:

    INSERT INTO BancoA.dbo.Usuarios (Campo2A, Campo2B)
    SELECT Campo1A, Campo1BB
    FROM BancoA.dbo.Usuarios

    OBSERVAÇÕES:

    - No exemplo utilizei "dbo", já que não sei se há algum schema definido.

    Espero ter ajudado

    Abs

    Renato,

    Sua sugestão está correta, mas os datatypes das colunas devem ser os mesmos entre às colunas (das tabelas na origem e no destino) para evitar perda de dados ou falhas de execução por "truncar" um ou mais valores dessas colunas (Esta é apenas uma orientação, espero que compreenda).

    Outro detalhe, talvez na "pressa" você citou ambos os bancos de dados como "BancoA".

    José,

    Fazer a importação utilizando T-SQL é possível e prático para alguns casos onde a estrutura das tabelas são semelhantes. Então a opção indicada pelo Renato é uma possibilidade. Caso você não tenha muita prática com T-SQL ou "tempo" então uma opção simples, objetiva e funcional foi indicada pela Mariana.

    Verifique o que é mais útil para você neste momento.

    Em ambos os casos, se esta tabela possui uma coluna com propriedade "IDENTITY" então será necessário, você "desabilitar" a sua funcionalidade durante esta importação de dados. Segue abaixo:

    Utilizando a sugestão do Renato:

    --NO BANCO DE DADOS "DESTINO"
    USE BancoDestino
    GO
    
    SET IDENTITY_INSERT TB_PESSOA ON
    
    INSERT INTO TB_PESSOA (CD_PESSOA, NM_PESSOA)
    SELECT ID_ALUNO,NM_ALUNO 
    FROM BancoOrigem.dbo.TB_Alunos;
    
    SET IDENTITY_INSERT TB_PESSOA OFF
    GO

    Utilizando a sugestão da Mariana (veja a imagem abaixo):

     



    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Xarp2 quinta-feira, 5 de fevereiro de 2015 11:11
    quarta-feira, 4 de fevereiro de 2015 22:04
    Moderador

Todas as Respostas

  • SE os bancos estão no mesmo servidor, o processo é bem simples:

    INSERT INTO BancoA.dbo.Usuarios (Campo2A, Campo2B)
    SELECT Campo1A, Campo1BB
    FROM BancoA.dbo.Usuarios

    OBSERVAÇÕES:

    - No exemplo utilizei "dbo", já que não sei se há algum schema definido.

    Espero ter ajudado

    Abs

    • Marcado como Resposta Xarp2 quinta-feira, 5 de fevereiro de 2015 11:10
    quarta-feira, 4 de fevereiro de 2015 18:53
  • José, boa tarde.

    As bases estão na mesma instância? Se sim, basta fazer um

    INSERT INTO BancoDadosB..Pessoas
    (lista campos)
    SELECT <Lista campos> 
    FROM BancoDadosA..Usuários
    

    Se elas estiverem em servidores diferentes, eu faria um pacote do Integration Services para a cópia, ou usaria o Import/Export no próprio SQL Server Management Studio.

    Isso te ajuda?



    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    • Sugerido como Resposta Roberto F FonsecaModerator quarta-feira, 4 de fevereiro de 2015 19:10
    • Marcado como Resposta Xarp2 quinta-feira, 5 de fevereiro de 2015 11:10
    quarta-feira, 4 de fevereiro de 2015 18:56
  • Sugiro que você utilize o Integration Services para fazer a transferência, pois você pode realizar as transformações necessárias para adequar à modelagem e mapear os campos entre uma tabela e a outra.

    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 4 de fevereiro de 2015 19:00
  • SE os bancos estão no mesmo servidor, o processo é bem simples:

    INSERT INTO BancoA.dbo.Usuarios (Campo2A, Campo2B)
    SELECT Campo1A, Campo1BB
    FROM BancoA.dbo.Usuarios

    OBSERVAÇÕES:

    - No exemplo utilizei "dbo", já que não sei se há algum schema definido.

    Espero ter ajudado

    Abs

    Renato,

    Sua sugestão está correta, mas os datatypes das colunas devem ser os mesmos entre às colunas (das tabelas na origem e no destino) para evitar perda de dados ou falhas de execução por "truncar" um ou mais valores dessas colunas (Esta é apenas uma orientação, espero que compreenda).

    Outro detalhe, talvez na "pressa" você citou ambos os bancos de dados como "BancoA".

    José,

    Fazer a importação utilizando T-SQL é possível e prático para alguns casos onde a estrutura das tabelas são semelhantes. Então a opção indicada pelo Renato é uma possibilidade. Caso você não tenha muita prática com T-SQL ou "tempo" então uma opção simples, objetiva e funcional foi indicada pela Mariana.

    Verifique o que é mais útil para você neste momento.

    Em ambos os casos, se esta tabela possui uma coluna com propriedade "IDENTITY" então será necessário, você "desabilitar" a sua funcionalidade durante esta importação de dados. Segue abaixo:

    Utilizando a sugestão do Renato:

    --NO BANCO DE DADOS "DESTINO"
    USE BancoDestino
    GO
    
    SET IDENTITY_INSERT TB_PESSOA ON
    
    INSERT INTO TB_PESSOA (CD_PESSOA, NM_PESSOA)
    SELECT ID_ALUNO,NM_ALUNO 
    FROM BancoOrigem.dbo.TB_Alunos;
    
    SET IDENTITY_INSERT TB_PESSOA OFF
    GO

    Utilizando a sugestão da Mariana (veja a imagem abaixo):

     



    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Xarp2 quinta-feira, 5 de fevereiro de 2015 11:11
    quarta-feira, 4 de fevereiro de 2015 22:04
    Moderador