none
migra dados de um banco para outro. RRS feed

  • Pergunta

  • Boa tarde, eu peguei uma planilha de Excel e transformei em um banco de dados só que ficou um banco de uma tabela só, agora eu montei um banco dividindo a tabela gerada pela planilha em varias tabelas por questão de normalização, porem eu não estou conseguindo passar os dados do primeiro banco para o segundo, peço que me ajude, pois eu não se como fazer,estou usando o SQL Server 2005

    Obrigado


    estudande
    segunda-feira, 29 de junho de 2009 18:22

Respostas

Todas as Respostas

  • Lutador,

    Como você esta tentando fazer este procedimento?


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 29 de junho de 2009 19:41
    Moderador
  • Boa Tarde,

    Ao normalizar uma tabela com dados, você deverá realizar as instruções de INSERT e de UPDATE para que os dados dessa tabela desnormalizada possam ser carregadas nas demais tabelas. Não existe solução pronta para isso. Como a normalização irá envolver tabelas específicas que variam de situação para situação, não há como ajudarmos com uma solução genérica. Possivelmente o SSIS poderá ajudá-lo, mas se você não souber utilizá-lo terá que ir via SQL (muito DISTINCT a vista). Veja um exemplo.

    create table #tabeladesnormalizada (cod int, nome varchar(20), telefone varchar(15), tipotelefone varchar(20))
    insert into #tabeladesnormalizada values (1, 'Cliente 1', '32263425', 'Residencial')
    insert into #tabeladesnormalizada values (1, 'Cliente 1', '98734123', 'Celular')
    insert into #tabeladesnormalizada values (2, 'Cliente 2', '45327765', 'Empresarial')
    insert into #tabeladesnormalizada values (3, 'Cliente 3', '32263425', 'Empresarial')
    -- Cria a tabela de tipos de telefone create table #tipotel (codtipotel int identity(1,1), tipotel varchar(20))
    -- Carrega os tipos de telefone insert into #tipotel (tipotel) select distinct tipotelefone from #tabeladesnormalizada
    -- Cria a tabela de clientes create table #clientes (codcli int, nome varchar(20))
    -- Carrega os clientes insert into #clientes (codcli, nome) select distinct cod, nome from #tabeladesnormalizada
    -- Cria uma tabela de Telefones create table #telefones (codtel int identity(1,1), codcli int, numtel varchar(15), codtipotel int)
    -- Carrega a tabela de telefones insert into #telefones (codcli, numtel, codtipotel) select codcli, telefone, codtipotel from #tabeladesnormalizada as td inner join #tipotel as tt on td.tipotelefone = tt.tipotel inner join #clientes as c on td.nome = c.nome
    -- Verifica as tabelas select * from #Clientes select * from #TipoTel select * from #telefones
    -- Exclui as tabelas drop table #Clientes drop table #TipoTel drop table #Telefones

    [ ]s,

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

    O que é Cross Database Ownership Chaining ? - Parte I
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!620.entry


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 29 de junho de 2009 20:06
  • fazendo um select no banco atual e depois copio os dados e inserio nas respectivas tabela isto e muito cansativo.
    Ex:copio as cidades do campo cidade e insiro na  tupla da tabela produtor.


    estudande
    terça-feira, 30 de junho de 2009 00:04
  • O que eu estou querendo é preencher outras tabelas com os dados que já tem em outro banco, eu tenho um banco com os dados do produtor junto com irrigação, produção, nível de infestação,região,nome da propriedade tudo em uma única tabela,então eu construí um banco com cada tabela distinta ,só que agora eu quero  pegar os dados já cadastrado e inserir em outro banco.


    estudande
    • Marcado como Resposta Flaviano_fs quinta-feira, 2 de julho de 2009 13:53
    • Não Marcado como Resposta Flaviano_fs quinta-feira, 2 de julho de 2009 13:53
    terça-feira, 30 de junho de 2009 00:45
  • Olá Lutador,

    Não há uma opção "Migration From One Table To Multiple Tables" disponível. Infelizmente você terá que montar os comandos para migrar os dados de uma tabela com todas as informações para várias tabelas cada um pedaço da informação. Afinal, cada situação tem suas peculiaridades

    [ ]s,

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

    O que é Cross Database Ownership Chaining ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!620.entry
    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Flaviano_fs quinta-feira, 2 de julho de 2009 13:54
    terça-feira, 30 de junho de 2009 13:15
  • OBRIGADO POR ME RESPODER EU VOU PEGAR UM LIVRO E Estudar MAIS,E FAZER A MIGRAÇAO VIA COMANDO,DEPOIS EU POSTO OS COMANDO QUE USAREI CASO DE CERTO(SRSRSR).
    OBRIGADO A TODOS DO FORUN
    estudande
    terça-feira, 30 de junho de 2009 13:51
  • Bom  eu consegui da seguinte forma:abri o visual estúdio 2005,criei um Windows from conectei ao banco e pela interface gráfica fiz a inserção dos dado copiado do banco .

    Eu creio que existe uma maneira de fazer direto no banco usando comando T-sql,mas ainda não sei mas vou aprender.

     


    estudande
    quinta-feira, 2 de julho de 2009 13:53
  • Lutador,

    Por acaso você já tentou utilizar o chamando Insert Into ... Select?

    Veja este exemplo:


    Insert Into Banco1.dbo.Tabela1.
    Select * from Banco2.dbo.Tabela2


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 2 de julho de 2009 17:57
    Moderador
  • Junior , me informaram o seguinte

     select [campo]

    From[tabela]

    Insert   into nome da tabela(campo)

    Values: inseri os dados do campo do primeiro select.

    Mas não deu certo.

    Amanhã vou tenda pelo código que você postou e lhe dou o feedback .


    estudande
    quinta-feira, 2 de julho de 2009 18:27
  • Bom dia Junior

    Eu tentei mais me retorno o seguinte erro

    An explicit value for the identity column in table 'Dados.dbo.Planilha' can only be specified when a column list is used and IDENTITY_INSERT is ON.


    estudande
    sexta-feira, 3 de julho de 2009 13:00
  • Boa Tarde,

    Tabelas com Identity tem esse problema. Você deve explicitar que irá inserir registros (mesmo com Identity). Recomendo dar uma lida no artigo abaixo:

    SQL Server: Geração de seqüenciais de forma automática
    http://www.plugmasters.com.br/sys/materias/836/1/SQL-Server%3A-Gera%E7%E3o-de-seq%FCenciais-de-forma-autom%E1tica

    [ ]s,

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

    O que é Cross Database Ownership Chaining ? - Parte I
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!620.entry


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 3 de julho de 2009 15:20
  • obrigado pela dica eu acessei seu saite,muito bom.

    estudande
    segunda-feira, 6 de julho de 2009 12:34