Ir para conteúdo
Fórum Script Brasil
  • 0

Script para copiar uma tabela de um banco para outro em mysql


mineiroxd

Pergunta

Olá pessoal, estou desenvolvendo uma integração e estou com uma dificuldade nesse scritp. Ele esta funcionando perfeito e vou compartilhar aqui, só que quando se trata de muitas tabelas para atualizar, o script roda e por um tempo ele para porque e muito longo, você tem que ficar tentando varias vezes até o servidor de hospedagem rodar ele por completo, as vezes só da certo a noite quanto esta mais tranquilo. Queria saber se tem como Modificar ele para ele executar como se fosse um passo a passo tipo executar cada comando independente, pois pode ser que funcione melhor.

Crie um arquivo chamado: atualizar.php e no seu conteúdo colocar:

 

<?php

// ATENÇÃO:

// No endereço do servidor dos bancos estou colocando localhost mas o certo é se, estão em hospedagens diferentes eles tem que ter permissão de acesso remoto e deve ser substituido pelo ip ou endereço.

//conexão com a matriz:

$matriz=mysqli_connect("HOST DE ORIGEM","USUARIO","SENHA","BANCO DE DADOS DE ORIGEM");

// Check connection Matriz

if (mysqli_connect_errno()) {

  echo "Failed to connect to MySQL da Matriz: " . mysqli_connect_error();

}

//conexão com a filial:

$filial=mysqli_connect("HOST DE DESTINO","USUARIO","SENHA","BANCO DE DADOS DESTINO");

// Check connection Filial

if (mysqli_connect_errno()) {

  echo "Failed to connect to MySQL da Filial: " . mysqli_connect_error();

}

//----------------------INICIO DO SCRIP DE ATUALZAÇÃO-------------------------------------------
        mysqli_query($filial, "SET FOREIGN_KEY_CHECKS = 0");
                    
// Tabela TABELA DE DESTINO
        mysqli_query($filial, "TRUNCATE TABLE tabela_destino_dos_dados");
$tabela_origem_dos_dados = mysqli_query($matriz,"SELECT * FROM tabela_origem_dos_dados");
while($row = mysqli_fetch_array($tabela_origem_dos_dados)) {
        mysqli_query($filial,"INSERT INTO tabela_destino_dos_dados VALUES ('".$row['item_id']."','".$row['product_id']."','".$row['stock_id']."','".$row['qty']."')");

}

if (mysqli_close($matriz)) {
    echo '<script>
alert("Atualização concluida");
</script>';
}

if (mysqli_close($filial)) {
    echo '<span>
Atualização concluida</span>';
}
?>

 

 

 

Até ai tudo bem, e uma tabela só, mas quando você usa para atualizar 48 tabelas as vezes o script para na metade e não termina.

Alguém pode ajudar.

 

Editado por mineiroxd
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Pode ser o tempo limite de execução do PHP. Use set_time_limit(0) no topo do script para remover esse limite.

Mas para casos assim, recomendo fazer tudo pelo próprio MySQL. No máximo, um script PHP para chamar os comandos. Veja sobre o comando mysqldump, que exporta um banco de dados. Depios é só importar no outro banco. Bem mais rápido e eficiente que copiar registro por registro

Link para o comentário
Compartilhar em outros sites

  • 0

Vlw Beraldo pela resposta cara, vou testar a funsão set_time_limit(0) no meu script para ver se funciona, eu já verifiquei a questão do mysqldump, mas não sei porque as tabelas com o comando não copiam, ai teve que fazer dessa forma ai que você viu, ai elas copiaram normal. Eu estava pensando em criar um sisteminha que roda-se de maneira individual cada tabela com um progresso, por exemplo:

copiando tabela_destino_dos_dados_1 = 30%

copiando tabela_destino_dos_dados_2 = 60%

e por ai vai... tem como fazer isso????

Link para o comentário
Compartilhar em outros sites

  • 0

mysqldump só exporta os dados. Depois é preciso importar de novo. O comando não faz uma "cópia". São dois passos. Talvez tenha sido esse o seu erro.

Você pode fazer cada script copiar uma tabela, mas ainda assim será mais lento que fazer tudo pelo próprio MySQL.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...