Jump to content
Fórum Script Brasil
  • 0

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


mineiroxd
 Share

Question

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.

 

Edited by mineiroxd
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...