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:
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.
74 comments
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
Isso ae Tevaum…. no seu exemplo ele irá criar uma tabela com os campos nome e email. :)
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.
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?
e ai bicho, vc sumiu…. preciso muito falar com vc.
Ótimas dicas, parabéns !
Elane, recomendo voce exportar para um aquivo SQL e depois importar na outra tabela atraves desse arquivo.
Muito boa a dica!!
Parabéns
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?
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
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*
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.
Basta usar o comando:
create table copia_tabela select * from tabela;
Abraços
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…
Isadora, recebi seu email, estarei respondendo por la, ok?
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 ????
Edson, basta voce usar o comando mysqldump e gerar um SQL. Depois é so importar o arquivo no outro servidor.
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?
Eduardo, so utilzar o INSERT como SELECT.
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
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
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?
Andreia, você quer fazer isso em uma linguagem ou direto no MySQL?
Vanessa, Uma tabela, voce diz um campo? Sera isso? Não entendi sua pergunta.
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.
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. ;)
Otima dica Obrigado Mesmo Funciono 100%
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` ‘;
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??
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.
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
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.
Antonio, so fazer SET codigo=quantidade WHERE codigo=codigo2 … nao seria isso?
Jr. Velame, É porque este campo é um INDEX UNIQUE. Basta remover este index da tabela e popular novamente, ok?
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
Estou usando o exemplo de insert com select, direto no banco funciona perfeitamente, mas quando executo no Delphi 2010 me retorna ‘Error creating cursor handle’.
Tem mais alguma dica ?
Obrigado
a Query atualiza a Tabela, porem da esse erro …
Junior, qual o erro?
Junior, infelizmente não sei nada de Delphi.
Olá, poderia me dizer se tem como copiar uma tabela1 com nome, idade, data para tabela2 com nome, idade, data mas na tabela2 colocar uma nova data (no caso, no dia que os dados foram copiados)?
Estou usando PHP.
Agradeço antecipadamente.
Ola Diogo, eu preciso atualizar a quantidade em estoque de um determinado banco de dados usando o codigo do produto correspondente, mas ele so pode atualizar a quantidade referente ao seu codigo do produto.
cod produtoquant
0000000100 | 150
Emilson, update atraves do campo referencia, ou ate mesmo do codigo do produto. A sua escolha.
Diogo, eu estou desesperado atrás de uma solução para o seguinte problema:
Eu tenho uma tabela no meu banco para o cadastro de funcionário e eu tenho que fazer o seguinte: toda vez que eu cadastrar esse funcionário, eu vou criar um login pra ele, ou seja, eu tenho duas tabelas, uma de cadastro de funcionário e outra para o cadastro de login e senha desse msm funcionário. O que eu quero fazer é o seguinte: toda vez que eu cadastrar o funcionário eu preciso resgatar o id desse funcionário pra poder colocar na tabela de login. O primeiro passo eu já fiz, que foi dar o foreign key de uma tabela pra outra. Agora eu quero saber como eu resgato esse id do novo funcionário cadastro. Vc pode me ajudar pelo amor de Deus.
Obrigado!!
Bruno, não precisa ficar desesperado, a função que você quer é a mysql_insert_id, que retorna o ultimo ID criado em uma tabela com incremento. Leia mais em: http://php.net/manual/pt_BR/function.mysql-insert-id.php … qualquer duvida estou a disposição! :)
Boa noite ..
Tenho uma duvida.. Tenho 3 tabelas a SHowtimes , Movies e Cinemas… As tabelas movies e cinemas estao preenchidas e queria juntar o Id da tabela movies na tabela Showtimes no campo movie_ID e o mesmo nos cinemas so que muda o campo para cinemas_ID … Como faço esta engenhoca ?
Jorge, faz um while com php e resolva facilmente isso
Boa noite,
Estou começando a usar Delphi agora, tenho que fazer um programa de frete de caixa onde quando eu digitar uma letra deve inserir o produto refente na tabela item_de_venda e quando digito um numero deve ser a quantidade do produto.
e apresentar em um dbgrid os produtos referente aquela venda.
Estou tentando fazer isto a dias será que vc pode me ajudar,
desde já agradeço
Como assim ??
faz me um exemplo sff para comprender
Adriano, não trabalh com Delphi. Oo