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

Administration MySQL Discussion :

BACKUP : sauver le contenu de plusieurs tables dans des fichiers


Sujet :

Administration MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut BACKUP : sauver le contenu de plusieurs tables dans des fichiers
    Bonjour,

    J'ai une base de données qui contient une vingtaine de tables et je me demandais quel était le moyen le plus simple pour écrire un script PHP qui exporte le contenu de toutes les tables sous forme de fichiers séparés avec tout ce qu'il faut dans les fichiers pour permettre une restauration aisée des données (mais pas les triggers ni les fonctions). Un peu du genre de ce que PHPMyAdmin fait lorsqu'on lui demande de tout exporter en SQL.

    Vous auriez un conseil ? C'est une requête du genre "SELECT * FROM table INTO OUTFILE ..." par table ou il y a moyen de faire cela mieux ?
    Je me dis qu'il faudrait aussi sauver la structure des tables ainsi que l'encodage, par exemple... Du coup, la requête ci-dessus ne semble pas suffisante...

    Merci d'avance pour vos conseils !

    T.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut
    Je me réponds pour proposer une solution :-) Que pensez-vous de ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    $database = 'DATABASE';
    $user = 'USERNAME';
    $pass = 'PASSWORD';
    $host = 'localhost';
    $dir = dirname(__FILE__) . '/dump.sql';
    echo "<h3>Backing up database to `<code>{$dir}</code>`</h3>";
    $output = `MYSQL_PWD="$pass" mysqldump --user={$user} --host={$host} {$database} --result-file={$dir} 2>&1`;
    echo "<p>fini !</p>";
    EDIT. Je l'ai un peu changé pour compresser et faire en sorte que le mot de passe mySQL ne soit pas visible dans la liste des processus. La commande dans $output est maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump --defaults-file=path-to-my-config-mysql-file.cf --user={$user} --host={$host} --databases {$database} | bzip2 > $dir 2>&1

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut trucmuche2005.

    Citation Envoyé par trucmuche2005
    J'ai une base de données qui contient une vingtaine de tables et je me demandais quel était le moyen le plus simple pour écrire un script PHP qui exporte le contenu de toutes les tables sous forme de fichiers séparés avec tout ce qu'il faut dans les fichiers pour permettre une restauration aisée des données (mais pas les triggers ni les fonctions). Un peu du genre de ce que PHPMyAdmin fait lorsqu'on lui demande de tout exporter en SQL.
    En fait, vos explications ne sont pas très claires.
    Est-ce pour faire une restauration de votre table, voire votre base de données en cas de plantage ?
    Dans ce cas, vous pouvez utiliser la commande "mysqldump".
    --> https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

    si c'est pour migrer ves un autre support, par exemple dans un fichier excel ou en json, vous pouvez utiliser un "select ... into outfile ...".
    --> https://dev.mysql.com/doc/refman/8.0...lect-into.html

    Citation Envoyé par trucmuche2005
    Du coup, la requête ci-dessus ne semble pas suffisante...
    Quelle est la finalité de cette manipulation ?
    si c'est pour faire une restauration de votre base de données, c'est mysqldump !

    Pour faire l'export (selon la terminologie de phpmyadmin), vous pouvez faire ceci dans un batch windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
     
    CALL ../Param.cmd
     
    @echo "+--------------------------------+"
    @echo "| Déchargement des tables 'Test' |"
    @echo "+--------------------------------+"
    @echo.
     
    mysqldump --no-create-db  --opt  --databases test  --result-file=Test.sql
     
    pause
    exit
    Comme vous le constatez, je n'ai pas mis le nom du compte et le mot de passe directement dans la commande "MySqlDump".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [client]
    port   = 3306
    socket = mysql
     
    # ----------------------- #
    #     access features     #
    # ----------------------- #
     
    user     = root
    password = root
    host     = localhost
    Il faut renseigner le compte et le mot de passe, dans la section "[client]" du fichier my.ini.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Est-ce pour faire une restauration de votre table, voire votre base de données en cas de plantage ?
    Dans ce cas, vous pouvez utiliser la commande "mysqldump".
    --> https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
    Oui, sorry, c'est pour cela. Je vais un peu voir du côté des paramètres de mysqldump, maintenant, pour voir lesquels sont pertinents à mettre dans mon cas, pour assurer une bonne sauvegarde complète de toutes les données utilisateur (sans triggers, sans fonctions etc).

    Merci !

Discussions similaires

  1. [PROC] Export de table dans des fichier texte
    Par jjDai dans le forum SAS Base
    Réponses: 2
    Dernier message: 12/11/2012, 17h13
  2. [Débutant] Enregistrer le contenu de plusieurs Edit dans un fichier .txt
    Par coxycross dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/06/2012, 10h28
  3. Réponses: 4
    Dernier message: 09/05/2010, 17h22
  4. find + grep recherche de plusieurs mots dans des fichiers différents
    Par sakura.haruno dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2010, 22h58
  5. Réponses: 7
    Dernier message: 12/06/2007, 14h59

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