IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Copie de tables (local) vers une base web


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Copie de tables (local) vers une base web
    Bonjour à tous,
    Est-il possible de copier plusieurs située sur un serveur local vers une serveur web, sans utiliser de dump, mais en PHP, afin de réaliser une commande automatisée.
    Merci.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Par défaut
    Si tu arrive a te connecter a ta base de donnée de ton serveur web a distance (en dehors du meme nom de domaine) alors c'est faisable sinon une solution serais de passer par du transfert de fichier (FTP). Ca se fait en 2 temps, d'abords tu fait un backup de ta table en local ensuite tu fait un restore sur le serveur WEB.

    Il y'a au moins 2 facon de faire :
    - Faire une Query de backup de la BDD.
    - Executer mysqldump en utilsant la fonction system().

    - Faire une Query de backup de la BDD.

    Un exemple de code en utilisant une query SELECT INTO OUTFILE pour créer la table backup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $tableName  = 'matable';
    $backupFile = 'matable.sql';
    $query      = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName";
    $result = mysql_query($query);
    ?>
    Transfert du fichier sauvegardé vers le serveur WEB en FTP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $file = 'matable.sql';
    $remote_file ='matable.sql';
     
    $conn_id = ftp_connect($ftp_server);
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
     echo "Tranfert réussi fichier $file\n";
    } else {
     echo "Probleme transfert fichier $file\n";
    }
     
    ftp_close($conn_id);
    ?>
    Pour récupérer la table sur le serveur WEB tu aura besoin de faire une query LOAD DATA INFILE comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $tableName  = 'matable';
    $backupFile = 'matable.sql';
    $query      = "LOAD DATA INFILE '$backupFile' INTO TABLE $tableName";
    $result = mysql_query($query);
    ?>
    - Executer mysqldump en utilsant la fonction system().

    La fonction system() est utilisé pour exécuter un programme externe (si le serveur WEB le permet). On peut appeler mysqldump a partir du code PHP.
    Pour sauvegarder toute la BDD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $backupFile = $nomBDD . date("Y-m-d-H-i-s") . '.gz';
    $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $nomBDD | gzip > $backupFile";
    system($command);
    ?>
    Ou bien quelques tables spécifiques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $backupFile = $nomBDD . date("Y-m-d-H-i-s") . '.gz';
    $command = "mysqldump -h $dbhost -u $dbuser -p $dbpass $nomBDD $table1,$table2,$table3 | gzip > $backupFile";
    system($command);
    ?>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 74
    Par défaut
    Pourquoi ne pas regarder du côté de la réplication de base myql entre deux serveurs ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Un serveur est local tandis que le second est mutualisé, ce qui ne facilite pas les choses pour des raisons de droits

  5. #5
    Invité
    Invité(e)
    Par défaut
    Est-il possible avec PHP de faire quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE base_1.table SELECT * FROM base_2.table

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Oui mais à condition que les deux bases soient sur le même serveur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/04/2012, 18h04
  2. Réponses: 0
    Dernier message: 31/08/2011, 10h27
  3. [AC-2003] Tables liées vers une base protégées
    Par basto dans le forum Access
    Réponses: 7
    Dernier message: 13/01/2010, 20h02
  4. copie d'un record vers une autre table
    Par ph4prod dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/10/2005, 14h04
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo