Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal
Estou importando dados de um banco antigo...Sendo que nele a empresa era cadastrada em uma tabela chamada empresa e o aluno em outra tabela chamada aluno. A a relacao para saber se o aluno pertence a empresa era feita na tabela aluno_empresa. Sendo que no atual, tanto o aluno quanto empresa sao cadastrados inicialmente numa tabela pessoa, ou seja, alunos e empresas nunca terao id repetidos.
Minha duvida é como importar os dados da tabela aluno_empresa do banco antigo sem que ocorra duplicao de campo que nao pode existir no banco novo.
Exemplo no banco antigo o aluno com id=3 podia estar na empresa com id=3, ja no atual isso nao pode pois aluno e empresa pertence incialmente a uma tabela pessoa
tava pensnado em exportar a tabela empresa somando o id com a quantidade de aluno.. alguma ideia ?
Obg
sim sim..
Cria duas colunas nas novas tabelas
tipo_anterior
id_anterior
faz dois cursores
select * from empresas
insere na nova tabela (atualizando os novos campos)
select * from alunos
insere na nova tabela (atualizando os novos campos)
O sequencial o MySql mesmo monta.
o problema que os dados da tabela aluno_empresa ficariam invalido nesse caso.
Pensei da seguinte maneira e fiz isso:
Primeiro exportei os dados do id e nome do aluno da tabela Aluno do banco antigo:
--exportando dados para pessoa
SELECT id_aluno, nome
FROM alunos_pf
INTO OUTFILE 'c:/meuarquivo.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n';
Depois inseri esse arquivo csv na minha tabela Pessoa do banco novo (nao tive duplicacao pq ela estava zerada).
LOAD DATA LOCAL INFILE 'c:/meuarquivo.csv'
INTO TABLE pessoa
FIELDS TERMINATED BY ';'
(id_aluno, nome)
Minha duvida era, tenho que colocar a empresa na tabela pessoa, porem eu tenho empresa com id 1,2,3... que ja existem que vieram do meu aluno. Eu tinha 3318 alunos cadastrados entao fiz assim:
Exportei os dados da tabela Empresa do banco antigo, somando à quantidade de alunos que eu tinha registrado:
SELECT id_empresa+3318, nome
FROM empresa
INTO OUTFILE 'c:/meuarquivo7.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n';
Importei na tabela Pessoa do banco novo:
LOAD DATA LOCAL INFILE 'c:/meuarquivo7.csv'
INTO TABLE pessoa
FIELDS TERMINATED BY ';'
(id_pessoa, nome_pessoa);
Depois exportei a tabela aluno_empresa somando 3318 ao id_empresa... solucionou meu problema, porem nao sei se existe uma maneira mais facil de fazer isso. Agradeço a ajuda !
vlw...
Assim é perdido o nº do id do Sistema antigo.
>
SELECT id_empresa+3318, nome
FROM empresa
INTO OUTFILE 'c:/meuarquivo7.csv'
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n';
Depois exportei a tabela aluno_empresa somando 3318 ao id_empresa... solucionou meu problema, porem nao sei se existe uma maneira mais facil de fazer isso. Agradeço a ajuda !
vlw...
H.h,
Realmente não é a melhor maneira tendo em vista que você está somando 3318 para cada id_empresa. #NOSENSE
Se o campo id_pessoa da tabela pessoas for AUTO_INCREMENT, exporte apenas a coluna nome da tabela empresa para o CSV e importe o arquivo especificando apenas a coluna nome_pessoa.
Mas parceiro, no meu ponto de vista, o banco ficaria melhor modelado se você continuasse a ter uma tabela PESSOAS para os alunos no entanto, uma tabela EMPRESAS para tal.
O objetivo era perder msm o id do sistema antigo, porem sem perder os relacionamento de aluno/empresa. E mudar a modelagem agora no novo sistema esta fora de possibilidades =/... Agradeço a ajuda!
>
O objetivo era perder msm o id do sistema antigo, porem sem perder os relacionamento de aluno/empresa. E mudar a modelagem agora no novo sistema esta fora de possibilidades =/... Agradeço a ajuda!
Deixar de usar o id antigo é uma coisa.
Modelar informações sobre Pessoas numa TB_PESSOAS e Empresas numa TB_EMPRESAS é outro assunto. :)
A coluna da nova tabela será auto-incremento ?