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

 MySQL Discussion :

Sauvegarde BD-Contenu NULL remplacé par un 'blanc'


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Sauvegarde BD-Contenu NULL remplacé par un 'blanc'
    Bonjour,

    J'ai écrit une procédure de sauvegarde. Le fichier généré est bon, je peux ré-initialiser ma BD en utilisant phpmyadmin (Import).
    Le problème est que les champs contenant NULL sont rechargés par un blanc.
    extrait du programme de sauvegarde :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         while ($ligne = mysqli_fetch_array($req_table))
            {
            $insertions .= "INSERT INTO $table VALUES(";
            for ($i=0; $i<=$nbr_champs-1; $i++)
              {
              $insertions .= "'" . $dblink->real_escape_string($ligne[$i]) . "', ";
              }
            $insertions = substr($insertions, 0, -2);
            $insertions .= ");\n";
            }
    Note : lorsque je fais la sauvegarde avec phpmyadmin, les champs NULL sont bien rechargés.
    Mais je souhaiterais utiliser mon programme de sauvegarde car celui-ci est lancé périodiquement à partir du serveur (webcron)

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 091
    Points : 30 865
    Points
    30 865
    Par défaut
    Bonjour,

    Si tu souhaites que tes colonnes (il n'y a pas de champs en SQL) vides soient placées à NULL, il faut y enregistrer explicitement ce marqueur et non une chaine vide.
    Exemple : ... VALUES (1, 'toto', NULL, 3.1415972)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 266
    Points : 39 407
    Points
    39 407
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Si je comprends bien, cette procédure lit ligne à ligne une table pour insérer ligne à ligne dans une autre
    Ce n'est pas comme ça qu'il faut sauvegarder vos tables, cette procédure va prendre des plombes si le volume à sauvegarder est important.
    Il est préférable d'exécuter un dump à lancer par un .bat

  4. #4
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci
    J'ai essayé ceci :


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	  $null=NULL; 
    ....
            $insertions .= (($val)=='') ?  $null  : "'".$val."'";
    …

    L'inconvénient est que toutes les colonnes qui contiennent '' sont remplies par NULL
    Ca ne devrait pas être génant sauf que dans certaine colonne, l'insertion du NULL est refusée !
    J'aurais souhaité traiter ce cas que dans une colonne précise, ce qui ne semble pas possible selon cette méthode de sauvegarde
    Je vais encore chercher
    Merci encore, je vais essayer, selon le conseil de escartefigue, côté mysqldump

  5. #5
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Si je comprends bien, cette procédure lit ligne à ligne une table pour insérer ligne à ligne dans une autre
    Ce n'est pas comme ça qu'il faut sauvegarder vos tables, cette procédure va prendre des plombes si le volume à sauvegarder est important.
    Il est préférable d'exécuter un dump à lancer par un .bat
    Merci
    j'ai essayé en vain mysqldump !
    Je n'y arrive pas !
    par exemple :mysqldump -u localhost --databases xxxx > dump_bdd.sql
    dans un programme php et d'autres essais ...
    Je continue mes recherches

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 266
    Points : 39 407
    Points
    39 407
    Billets dans le blog
    9
    Par défaut
    il y a un fil de discussion ici qui date un peu, mais reste d'actualité
    https://www.developpez.net/forums/d1...de-d-base-bat/

    et un tuto ici
    https://mysql.developpez.com/tutorie...ilitaires#L8-8

  7. #7
    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 391
    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 391
    Points : 19 135
    Points
    19 135
    Par défaut
    Salut à tous.

    "Localhost" n'est pas un user mais un hôte, par contre "root l'est.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump  --user=root  --host=localhost --password=toor  --no-create-db  --opt  --databases test  --result-file=test.sql
    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #8
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    "Localhost" n'est pas un user mais un hôte, par contre "root l'est.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump  --user=root  --host=localhost --password=toor  --no-create-db  --opt  --databases test  --result-file=test.sql

    merci
    j'ai essayé dans un fichier .php
    en adaptant :
    mysqldump --user=root --host=localhost --no-create-db --opt --databases devsporting45 --result-file=test.sql

    résultat
    Parse error: syntax error, unexpected '--' (T_DEC) in D:\Sit....

    Je me demande si je n'ai pas un problème d'environnement.

  9. #9
    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 391
    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 391
    Points : 19 135
    Points
    19 135
    Par défaut
    Salut à tous.

    Ceci un fichier batch windows, de nom "test.bat" :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
     
    set PATH=f:\Wamp\bin\mysql\mysql8.0.28\bin\;%PATH%
     
    mysqldump --user=root  --host=localhost  --password=root  --no-create-db  --opt  --databases test  --result-file=test.sql
     
    pause
    exit
    Dans PATH, vous indiquez le chemin vers l'exécutable "mysqldump".

    Vous le lancez et voici le résultat :
    mysqldump: [Warning] Using a password on the command line interface can be insecure.
    Appuyez sur une touche pour continuer...
    Dans le fichier "test.sql", vous aurez le vidage de votre table "test".

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

  10. #10
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    merci
    je suis assez ignorant mais je n'arrive pas à trouver la directory PATH=f:\Wamp\bin\mysql\mysql8.0.28\bin\;%PATH% sur mon PC
    2e: même question côté serveur si je veux exécuter ce batch notamment via CRON

  11. #11
    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 391
    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 391
    Points : 19 135
    Points
    19 135
    Par défaut
    Salut Micsec.

    Vous êtes dans quel environnement Windows ou Linux ? Et quelle distribution ?

    Ce que je vous ai donné est un script batch de Windows.
    Si vous êtes sous linux, vous devez écrire un script bash ou plus simplement introduire la commande mysqldump dans un script php.

    Pour le chemin, vous êtes sensé le connaitre si vous avez installé WampServer ou Mysql dans votre ordinateur.

    Si vous parlez de crontab, vous êtes sous linux.

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

  12. #12
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Mysqldp
    Côté PC Windows, j’utilise easyphp et mysql pour les tests en local
    Côté serveur, oui j’utIlise Cron pour lancer un programme php de sauvegarde de la BD périodiquement mais, selon le conseil d’un ami du forum, je voulais utiliser mysqldump qui semblait mieux, d’ou ces questions

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2021
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2021
    Messages : 164
    Points : 187
    Points
    187
    Par défaut
    Bonjour,

    Sur mon ordi avec une installation par défaut ça donne quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe" -h localhost -u utilisateur -pMotDePasse mabase> C:\Monfichier.sql
    En cas de doute, tu peux te rendre manuellement dans le fichier bin via l'explorateur de fichier, puis copier/coller le chemin d'accès (en ajoutant "\mysqldump.exe").

    Nom : Capture d’écran 2022-04-02 111427.png
Affichages : 146
Taille : 20,2 Ko

Discussions similaires

  1. Remplacer les vides (blanc) par un tiret.
    Par Abdelinho dans le forum Word
    Réponses: 3
    Dernier message: 20/03/2011, 20h09
  2. script pour remplacer des caractères par des blancs
    Par floctc dans le forum Langage
    Réponses: 5
    Dernier message: 03/06/2009, 16h44
  3. Null remplacé par 0 avec sqlldr
    Par philophobia dans le forum SQL*Loader
    Réponses: 0
    Dernier message: 09/08/2008, 17h04
  4. Réponses: 3
    Dernier message: 12/09/2006, 12h53
  5. Réponses: 4
    Dernier message: 25/07/2006, 17h37

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