Hoje precisei copiar dados de uma tabela para outra. Mas como fazer isso facilmente atraves de linha de comando? … vou dizer, mas antes vamos as premissas:
* Não quero registros repetidos, neste caso o e-mail
* Não quero todos os dados da tabela Servidor (onde vou pegar os dados).
* So quero os e-mails começados com a letra “a”.
Então, vamos a dica:
1 | INSERT INTO tabela2 (nome, email) SELECT nome, email FROM tabela1 WHERE (email LIKE 'a%') GROUP BY email |
Logico que os dados acima são fictícios, mas funciona. A explicação basica é:
1- O comando INSERT como outro qualquer na tabela2 (a que vai receber os dados)
2- Em seguida vem um SELECT normal tambem, com os campos que desejo importar na mesma ordem que eu coloquei para inserir.
3- O WHERE para a condição dos e-mails começando com a letra “a”.
4- O GROUP BY para não repetir os e-mails. Poderia usar tambem o DISTINCT ou similar, fica a critério do fregues.
Se tiver alguma duvida sobre MySQL pode perguntar, se eu souber irei responder com certeza.

fevereiro 11th, 2010 at 12:44
Opa! INSERT … SELECT é muito útil sim… mas se vc ainda não tiver a tabela2, pode usar assim também:
SELECT nome, email INTO tabela2 FROM tabela1 WHERE (email LIKE ‘a%’) GROUP BY email
fevereiro 11th, 2010 at 17:28
Isso ae Tevaum…. no seu exemplo ele irá criar uma tabela com os campos nome e email. :)
fevereiro 20th, 2010 at 23:04
Diogo, to com umas idéias bacanas pro flogvip ! Uma delas pode até estimular os usuários a quererem o GoldVIP* ! Bom, eu tento falar contigo, mas nem sempre sou respondido. Caso te interesse as idéias e minha ajuda (sei que não é nada milagroso, mas é o que posso fazer pelo meu vício haha) me avise ! Abraço.
março 5th, 2010 at 10:48
No caso de eu ter duas conexões no banco, em uma está a tabela1, e na outra a tabela2; como faço pra criar a tabela1 com os dados da tabela2, sendo elas de “lugares” diferentes -uma não enxerga a outra?
abril 7th, 2010 at 22:43
e ai bicho, vc sumiu…. preciso muito falar com vc.
abril 13th, 2010 at 10:17
Ótimas dicas, parabéns !
maio 19th, 2010 at 13:57
Elane, recomendo voce exportar para um aquivo SQL e depois importar na outra tabela atraves desse arquivo.
agosto 21st, 2010 at 08:01
Muito boa a dica!!
Parabéns
setembro 16th, 2010 at 19:55
E se as tabelas tiverem nome diferente?
Ex:
INSERT INTO tabela2 (nome2, email2) SELECT nome, email FROM tabela1 WHERE (email LIKE ‘a%’) GROUP BY email
Seria assim?
outubro 19th, 2010 at 18:39
Muito util o codigo obrigada
Não sei se é aqui onde coloco a minha duvida, mas estou meio desesperado, é que eu preciso de um comando que faça o seguinte,
quando inserir o numero de identificação de um produto, logo na text box do nome do produto gravado com o numero de identificação que digitamos, se existir tal comando por favor me ajude
outubro 19th, 2010 at 19:03
Muito util o codigo obrigada
Não sei se é aqui onde coloco a minha duvida, mas estou meio desesperado, é que eu preciso de um comando que faça o seguinte,
quando inserir o numero de identificação de um produto, logo na text box do nome do produto apareça o nome do producto correspondente ao numero de identificação que digitamos, se existir tal comando por favor me ajude *me expressei mal no post anterior*
novembro 19th, 2010 at 22:38
Euridio, isso é até facil de se fazer.
Primeiro voce da o INSERT normal para ele gerar o ID, que deve ser uma chave primaria. Para recuperar este ID, use no PHP:
$UltimoID = mysql_insert_id();
Este comando deve estar logo abaixo a query insert do mysql. Ae depois é so você dar um UPDATE logo abaixo com o ID recuperado, ae resolve o seu problema.
dezembro 14th, 2010 at 22:57
Basta usar o comando:
create table copia_tabela select * from tabela;
Abraços
janeiro 18th, 2011 at 13:16
Oii, encontrei exatamente o que eu precisava… *-*
fiz o que está ali e tals, e aconteceu algo estranho…
quando eu cadastro os dados, após o ultimo passo eu coloquei os inserts…
ai qndo fui olhar no bd, ele havia criado 3 nomes, um sem nenhum dos dados das outras tabelas, outro com um dos dados de uma das tabelas e sem nenhum nome, e o outro com o dado da outra tabela sem nome e semo dado da primeira tabela…
não sei se fui clara… fiz um print do que aconteceu mas não sei se é possível colocar imagens aqui…
janeiro 18th, 2011 at 18:12
Isadora, recebi seu email, estarei respondendo por la, ok?
fevereiro 8th, 2011 at 16:05
Como faço para copiar os dados de uma tabela de um servirdor para outro?
Quero fazer a cópia de determinados dados de uma tabela (TABELAX) do meu servidor de produção para o meu servidor BACKUP.
Como posso fazer isso ????
abril 4th, 2011 at 22:37
Edson, basta voce usar o comando mysqldump e gerar um SQL. Depois é so importar o arquivo no outro servidor.
abril 26th, 2011 at 10:02
Bom Dia…
Estou com um caso parecido… Tenho uma tabela1 com os seguintes paramentros (id_cham e nome) que quero enviar para a tabela2 so q ja tenho estes parametros criados…somente queria inserir os dados.. as colunas ja existem…teria como fazer isso?
maio 2nd, 2011 at 16:35
Eduardo, so utilzar o INSERT como SELECT.
maio 16th, 2011 at 12:01
Não consegui usar como o Estêvão disse:
“Opa! INSERT … SELECT é muito útil sim… mas se vc ainda não tiver a tabela2, pode usar assim também:
SELECT nome, email INTO tabela2 FROM tabela1 WHERE (email LIKE ‘a%’) GROUP BY email”
Assim funcionou:
CREATE TABLE tabela_nova SELECT id, nome FROM tabela_antiga
Referência: http://dev.mysql.com/doc/refman/5.0/en/create-table.html
setembro 28th, 2011 at 22:41
Boa noite
Eu tenho uma tabela e gostaria de duplicar, de modo queseja criada uma linha logo abaixo, desta forma:
andreia1 xxxx xxxx xxx
andreia2 xxxx xxxx xxx
Para ficar assim:
andreia1 xxxx xxxx xxx
andreia1 xxxx xxxx xxx
andreia2 xxxx xxxx xxx
andreia2 xxxx xxxx xxx
Mas nao consigo encontrar uma formula para isso, alguem pode me ajudar?
Grato
outubro 10th, 2011 at 12:37
Olá Diogo,
qual comando devo utilizar para copiar em sua integridade uma tabela do bancoA para o bancoB?
Não quero copiar os dados, quero acrescentar uma tabela inexistente no bancoB que só existe em bancoA, tem como?
outubro 24th, 2011 at 12:25
Andreia, você quer fazer isso em uma linguagem ou direto no MySQL?
outubro 24th, 2011 at 12:30
Vanessa, Uma tabela, voce diz um campo? Sera isso? Não entendi sua pergunta.
outubro 26th, 2011 at 14:17
Olá Diogo,
Tipo estou estou procurando algo parecido com isso mas por exemplo no meu caso eu tenho 2 tabelas uma para processo e outra para finalizados em meu sistema. E tipo eu preciso que depois de uma ação de clique eu ela muda para outra tabela(finalizados) a questão é que se eu usar o insert ae nesta ação para mudar para a outra tabela o que aconteceria é que quando eu fosse usar a função normal para inserir um dado em minha tabela(processos) ele ja enviaria para a segunda tabela sendo que eu só quero que isso aconteça depois de eu clicar no botão para finalizar. Se vc poder me ajudar fico grato.
novembro 9th, 2011 at 16:10
Lukas, certamente nao usaria este comando. Voce deve fazer atraves de dois comandos mesmo. Um insert e um delete. Ou ainda fazer atraves de um triggers. ;)
novembro 22nd, 2011 at 22:04
Otima dica Obrigado Mesmo Funciono 100%
novembro 30th, 2011 at 14:54
Preciso inserir dados de uma tabela em outra, mais em um banco de dados diferente.
tentei colocando o nome do banco.tabela mais nao funciona…
cTxtSQL := ‘INSERT INTO `turnos.est_000500` (`Codigo`, `Cod_Barras`, `Grupo`, `SubGrupo`, `Descricao`, `inicio`, `Est_Pista`, `Est_Deposito`, `Custo`) ‘;
cTxtSQL := cTxtSQL + ‘SELECT `Codigo`, `Cod_Barras`, `Grupo`, `SubGrupo`, `Descricao`, `Est_Pista`, `Est_Pista`, `Est_Deposito`, `Custo_Nota` FROM `estoque.produtos` ‘;
janeiro 13th, 2012 at 08:34
Bom dia, preciso fazer algo semelhando Comando:
INSERT INTO produtos (precovendai) SELECT precoven FROM prenota
retorno do banco: [suporte] ERROR 1062: Entrada ” duplicada para a chave 2
Como proceder??
janeiro 24th, 2012 at 08:34
boa tarde,
tenho uma tabela onde tenho dois codigos e dois locais de estoque:
codigo filial local_estoq qtd
00013 00 01 10
00013 00 00 00
00015 00 01 20
00015 00 00 00
sendo assim eu preciso copiar tudo que tiver o codigo igual colocar a quantidade igual.
me ajudem não sem nem como começar. tenho conhecimento muinto fraco em mysql.
janeiro 26th, 2012 at 16:27
Seguinte tua dica me ajudou muito, mas estou com um problema, tenho duas tabalas
tabela1 com campos nome, emai
tabela2 com campos nome, email, idsuser
gostaria que esse id user fosse um campo que digitasse e não vem de outra tabela tipo
INSERT INTO tabela2 (nome, email, iduser) SELECT nome, email FROM tabela1 WHERE (email LIKE ‘a%’) GROUP BY email
somo eu iria inserir esse iduser sem ele está em outra tabela
janeiro 27th, 2012 at 13:09
Wilson, mais facil você fazer um loop em php pra isso, do que pelo MySQL. Se você for manager de BD, faz um script que da tambem.
janeiro 27th, 2012 at 13:11
Antonio, so fazer SET codigo=quantidade WHERE codigo=codigo2 … nao seria isso?
janeiro 27th, 2012 at 13:16
Jr. Velame, É porque este campo é um INDEX UNIQUE. Basta remover este index da tabela e popular novamente, ok?
março 3rd, 2012 at 07:19
Ola
Muito boa idéia
Usei numa tabela para reorganizar o id que é autoincremental e tive que deletar algumas linhas e tava cheio de buraco
Copiei os dados da tabela1 para a tabela2 menos o id que foi recriado sem buracos e depois delete tabela 1 e renomeiei tabela2 para tabela 1 e a performance
Obrigado
Marcos