Copier une table d'un serveur mysql a un autre en php
8 messages
• Page 1 sur 1
- willpower
- WRInaute discret

- Messages: 208
- Inscription: 15 Mar 2007
Copier une table d'un serveur mysql a un autre en php
Hello a tous,
J'essais de copier le contenu d'une table a une table identique sur un autre serveur.
Voici mon code:
Mais voila le contenu de la table updatedate2 se fait bien effacer, mais rien n'est copier.
Mes connection au base se font et mon "hello" s'affiche.
Avez vous une idee?
J'essais de copier le contenu d'une table a une table identique sur un autre serveur.
Voici mon code:
- Code: Tout sélectionner
<?
// BASE 2
$host2 = "nomdedomaine.ca"; // voir hébergeur
$user2 = "user2"; // vide ou "root" en local
$pass2 = "pass2"; // vide en local
$bdd2 = "cybersp1_kvdsoft"; // nom de la bdd
// connexion
@mysql_connect($host2,$user2,$pass2)
or die("Impossible de se connecter base 2");
@mysql_select_db("$bdd2")
or die("Impossible de se connecter database2");
//Efface le contenu actuel
mysql_query("TRUNCATE TABLE updatedate2");
//BASE ORIGINAL
$host = "localhost"; // voir hébergeur
$user = "user"; // vide ou "root" en local
$pass = "pass"; // vide en local
$bdd = "kvd"; // nom de la BD
// connexion
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db("$bdd")
or die("Impossible de se connecter");
mysql_query("INSERT INTO cybersp1_kvdsoft.updatedate2
Select * kvd.updatedate");
echo"hello";
?>
Mais voila le contenu de la table updatedate2 se fait bien effacer, mais rien n'est copier.
Mes connection au base se font et mon "hello" s'affiche.
Avez vous une idee?
- JulienV
- WRInaute discret

- Messages: 156
- Inscription: 18 Mar 2010
Re: Copier une table d'un serveur mysql a un autre en php
Salut 
Le mieux est de faire un backup de tes tables dans un fichier .txt ou .sql (fopen, fputs, fclose) puis de l'exporter sur ta seconde base.
Sinon, il y a aussi la réplication MySQL qui est très performante (ta base esclave se connecte à la base maître pour reproduire tes données à l'identique).
Le mieux est de faire un backup de tes tables dans un fichier .txt ou .sql (fopen, fputs, fclose) puis de l'exporter sur ta seconde base.
Sinon, il y a aussi la réplication MySQL qui est très performante (ta base esclave se connecte à la base maître pour reproduire tes données à l'identique).
- willpower
- WRInaute discret

- Messages: 208
- Inscription: 15 Mar 2007
Re: Copier une table d'un serveur mysql a un autre en php
On oubli l'option 1, car ca doit etre mis dans un script php qui sera lancer plusieurs fois par jour.
Pour ce qui est de l'option 2 j'ai seulement besoin de copier quelques tables et donc j'ai l'impression que ca va etre tres lourd pour rien non?
Merci
Pour ce qui est de l'option 2 j'ai seulement besoin de copier quelques tables et donc j'ai l'impression que ca va etre tres lourd pour rien non?
Merci
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Copier une table d'un serveur mysql a un autre en php
C'est normal que ça ne marche pas, tu fais une requête SQL sur un seul serveur, forcément, elle ne peut pas aller prendre des données dans une table sur un serveur X et la mettre sur un serveur Y.
Ce qu'il faut que tu fasses, c'est une première requête qui fait un select sur la première base, puis pour chaque ligne du résultat, faire un insert de la ligne en question dans la deuxième base.
Evidemment pour ça il faut que tu utilises des identificateurs de connexion de BDD explicites (un pour chaque connexion).
En gros:
En espérant que ta table ne soit pas trop grosse, sinon il va au minimum falloir faire ça par petits bouts (avec des offset/limit), sans parler de l'impact sur les performances des deux bases. Et evidemment il faudrait que l'ensemble de l'opération se fasse dans une transaction, sinon le gars qui arrive "au mauvais moment" il va avoir droit à une table incomplète...
Une solution de réplication aura l'avantage de faire de l'incrémental, i.e. ne copier que ce qui change (et en plus les modifications seront répercutées beaucoup plus rapidement).
Jacques.
Ce qu'il faut que tu fasses, c'est une première requête qui fait un select sur la première base, puis pour chaque ligne du résultat, faire un insert de la ligne en question dans la deuxième base.
Evidemment pour ça il faut que tu utilises des identificateurs de connexion de BDD explicites (un pour chaque connexion).
En gros:
- Code: Tout sélectionner
$bdd1 = mysql_connect(paramètres bdd 1);
$bdd2 = mysql_connect(paramètres bdd 2);
mysql_query("TRUNCATE table",$bdd2);
$res = mysql_query("SELECT * FROM table",$bdd1);
while ($row = mysql_fetch_assoc($res))
{
mysql_query("INSERT INTO table (col1,col2...) VALUES '".mysql_real_escape_string($row['col1'])."','".mysql_real_escape_string($row['col2'])."'...",$bdd2);
}
En espérant que ta table ne soit pas trop grosse, sinon il va au minimum falloir faire ça par petits bouts (avec des offset/limit), sans parler de l'impact sur les performances des deux bases. Et evidemment il faudrait que l'ensemble de l'opération se fasse dans une transaction, sinon le gars qui arrive "au mauvais moment" il va avoir droit à une table incomplète...
Une solution de réplication aura l'avantage de faire de l'incrémental, i.e. ne copier que ce qui change (et en plus les modifications seront répercutées beaucoup plus rapidement).
Jacques.
- JulienV
- WRInaute discret

- Messages: 156
- Inscription: 18 Mar 2010
Re: Copier une table d'un serveur mysql a un autre en php
Rien ne vaut la réplication MySQL pour faire cela, c'est extrêmement performant et ça prend à tout casser 5 minutes à mettre en place...
Même pour un débutant, comptons 1 heure pour être large
Même pour un débutant, comptons 1 heure pour être large
- willpower
- WRInaute discret

- Messages: 208
- Inscription: 15 Mar 2007
Re: Copier une table d'un serveur mysql a un autre en php
Hello,
Pour ce qui est de la replication, mon hebergeur est tellement securisé, que je trouve pas les fichiers a modifier et donc je crois que vu que mes tables ne sont pas trop grosse, que vais y aller avec un script php.
Je reprends donc le script de Jacques:
Le truncate fonctionne, mais le insert toujours pas. C'est surement quelques chose de bete, mais je trouve pas. Auriez-vous une idee?
Merci
Pour ce qui est de la replication, mon hebergeur est tellement securisé, que je trouve pas les fichiers a modifier et donc je crois que vu que mes tables ne sont pas trop grosse, que vais y aller avec un script php.
Je reprends donc le script de Jacques:
- Code: Tout sélectionner
<?
// BASE 2
$host2 = "nomdedomaine.ca"; // voir hébergeur
$user2 = "user2"; // vide ou "root" en local
$pass2 = "pass2"; // vide en local
//$bdd2 = "cybersp1_kvdsoft"; // nom de la bdd
//BASE ORIGINAL
$host1 = "localhost"; // voir hébergeur
$user1 = "user"; // vide ou "root" en local
$pass1 = "pass"; // vide en local
//$bdd = "kvd"; // nom de la BD
$bdd1 = mysql_connect($host1,$user1,$pass1);
$bdd2 = mysql_connect($host2,$user2,$pass2);
mysql_query("TRUNCATE table cybersp1_kvdsoft.updatedate2",$bdd2);
$res = mysql_query("SELECT * FROM kvd.updatedate",$bdd1);
while ($row = mysql_fetch_assoc($res))
{
mysql_query("INSERT INTO cybersp1_kvdsoft.updatedate2(customer, products, images) VALUES '".mysql_real_escape_string($row['customer'])."','".mysql_real_escape_string($row['products'])."','".mysql_real_escape_string($row['images'])."'",$bdd2);
}
echo"hello";
?>
Le truncate fonctionne, mais le insert toujours pas. C'est surement quelques chose de bete, mais je trouve pas. Auriez-vous une idee?
Merci
- willpower
- WRInaute discret

- Messages: 208
- Inscription: 15 Mar 2007
Re: Copier une table d'un serveur mysql a un autre en php
Youuuuuuuuuuuuuuppppi!
J'ai reussi!
Voici le code si ca peus aider...holalala j'en ai mis du temps pour ce ptit code..
Merci Jacques et Julien!
J'ai reussi!
Voici le code si ca peus aider...holalala j'en ai mis du temps pour ce ptit code..
- Code: Tout sélectionner
<?
// BASE 2
$host2 = "nomdedomaine.ca"; // voir hébergeur
$user2 = "user2"; // vide ou "root" en local
$pass2 = "pass2"; // vide en local
//$bdd2 = "cybersp1_kvdsoft"; // nom de la bdd
//BASE ORIGINAL
$host1 = "localhost"; // voir hébergeur
$user1 = "user"; // vide ou "root" en local
$pass1 = "pass"; // vide en local
//$bdd = "kvd"; // nom de la BD
$bdd1 = mysql_connect($host1,$user1,$pass1);
$bdd2 = mysql_connect($host2,$user2,$pass2);
mysql_query("TRUNCATE table cybersp1_kvdsoft.updatedate2",$bdd2);
$res = mysql_query("SELECT * FROM kvd.updatedate",$bdd1)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
while ($row = mysql_fetch_array($res))
{
mysql_query("INSERT INTO cybersp1_kvdsoft.updatedate2 (customer, products, images) VALUES ('".mysql_real_escape_string($row['customer'])."','".mysql_real_escape_string($row['products'])."','".mysql_real_escape_string($row['images'])."')",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
}
echo"hello";
?>
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- PHP MySql copy table à table [RESOLU]
- Table mysql à 1Go, 5 millions d'entrée, le serveur rame...
- Script PHP pour MAJ table Mysql
- recherche script php maintenance table mysql
- [php / mysql] Une grosse table ou plusieurs petites tables ?
- Afficher les 10 derniere insert d'une table Mysql avec php ?
- PHP et serveur Mysql externe
- [Sécurité] Script php / Serveur Mysql
- UPDATE TABLE MYSQL !
- table mysql : category
- Voir la classe C de plusieurs sites
Cet outil vous permet de vérifier si plusieurs sites sont hébergés sur la même classe C (adresse IP du serveur). - Analyseur d'entête HTTP
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités
