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

Scripts/Batch Discussion :

variable enregistrer dans .txt puis récupéré [MySQL] [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut variable enregistrer dans .txt puis récupéré [MySQL]
    Bonjour,

    J'ai fait un script assez simple pour importer des base sql sur mon serveur MySQL. Ensuite je récupère les tables qui m’intéresse, en créant un dump.

    Seul problème j'ai des tables avec plus de 150 000 000 de lignes, lorsque ses tables sont trop grandes je veux les "couper".
    Pour ma première étape il faut donc récupéré le nombre de ligne contenue dans ma base.

    Si j'ai bien compris le seule moyen d'avoir le résultat d'une requéte est de le sauvegarder dans un fichier txt.
    Je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\...\MySQL\bin\mysql.exe" -u root --database=maBase -e"SELECT count(id) FROM table1; SELECT count(id) FROM table2;"> fichierresult.txt
    mon fichierresult.txt contient :

    count(id)
    1774016
    count(id)
    3018972


    Comment puis-je récupéré les nombres et en faire la somme ?

    Cordialement.


    [edit:] premiére étape faite :
    "C:\....\MySQL\bin\mysql.exe" -u root --database=maBase --disable-column-names -e"SELECT sum(nbre) FROM (SELECT count(daily.id) nbre FROM table1 daily union SELECT count(hourly.id) nbre FROM table2 hourly) as test;"> fichierresult.txt

    ::récupération du nombre de ligne
    for /f "delims=" %%i in ('type fichierresult.txt') do set nombreDeLigne=%%i

    echo %nombreDeLigne%

    if %nombreDeLigne% gtr 20000000 (echo "y en a plus") else (echo "y en a moins")

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    La premiére etape fonctionne bien, je récupére le nombre de ligne et je le mets dans une variable pour le tester.

    Si j'ai bien compris il faut mettre le if condition() else () sur une seule ligne.
    Comment mettre plusieurs actions dans le else () ? et est ce qu'il est possible de mettre des sauts de ligne pour la visibilité ?

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Entre parenthèses, tu peux mettre autant de ligne que tu veux

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    setlocal enabledelayedexpansion
     
    "C:\....\MySQL\bin\mysql.exe" -u root --database=maBase --disable-column-names -e"SELECT sum(nbre) FROM (SELECT count(daily.id) nbre FROM table1 daily union SELECT count(hourly.id) nbre FROM table2 hourly) as test;"> fichierresult.txt
     
    ::récupération du nombre de ligne
    set /a "nombreDeLigne=0"
    for /f "delims=" %%i in ('type fichierresult.txt') do set /a "nombreDeLigne+=1"
     
    echo !nombreDeLigne!
     
    if !nombreDeLigne! gtr 20000000 (
      echo "y en a plus"
      echo "y en a plus 2"
    ) else (
      echo "y en a moins"
      echo "y en a moins2"
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    merci de votre réponse,

    A l'intérieur du if je refais un peu prés la même action :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ::créer un fichier texte avec le nombre de ligne par table
    "C:\...\bin\mysql.exe" -u root --database=maBase --disable-column-names -e"SELECT count(id) nbre FROM table;"> fichierresulttime.txt
    ::récupération du nombre de ligne
    set /a "nombreDeLigneTime=0"
    for /f "delims=" %%i in ('type fichierresulttime.txt') do  set nombreDeLigneTime=%%i
    echo %nombreDeLigneTime%
    set nombreDeLigneTime2=%nombreDeLigneTime% / 2
    echo %nombreDeLigneTime2%
    "C:\....\MySQL\bin\mysql.exe" -u root --database=maBase --disable-column-names -e"SELECT DATE_FORMAT(dtime,'%d-%m-%Y') FROM table where id = %nombreDeLigneTime2%;"> fichierlastdate.txt
    set /a "lastDate=0"
    for /f "delims=" %%i in ('type fichierlastdate.txt') do  set lastDate=%%i

    Quand je définie mes variables dans le else ou le if elles ne sont pas remplie, le echo renvoi echo is off.
    Mais si j’exécute la partie sans le if ou le else ca fonctionne bien. D'ou le probléme peut venir ?

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Il faut ajouter la ligne de commande 'setlocal enabledelayedexapnsion' au début du script et utiliser le caractère '!' au lieu du caractères '%' pour affiché le contenu des variables.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    setlocal enabledelayedexapnsion
     
    ::créer un fichier texte avec le nombre de ligne par table
    "C:\...\bin\mysql.exe" -u root --database=maBase --disable-column-names -e"SELECT count(id) nbre FROM table;"> fichierresulttime.txt
    ::récupération du nombre de ligne
    set /a "nombreDeLigneTime=0"
    for /f "delims=" %%i in ('type fichierresulttime.txt') do  set nombreDeLigneTime=%%i
    echo !nombreDeLigneTime!
    set /a "nombreDeLigneTime2=!nombreDeLigneTime! / 2"
    echo !nombreDeLigneTime2!
    "C:\....\MySQL\bin\mysql.exe" -u root --database=maBase --disable-column-names -e"SELECT DATE_FORMAT(dtime,'%d-%m-%Y') FROM table where id = !nombreDeLigneTime2!;"> fichierlastdate.txt
    set /a "lastDate=0"
    for /f "delims=" %%i in ('type fichierlastdate.txt') do  set lastDate=%%i
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Découpage d'un fichier .txt puis insertion dans base mysql
    Par laetiheu dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/08/2016, 12h52
  2. Réponses: 7
    Dernier message: 29/07/2011, 00h25
  3. Enregistré dans txt informations checkbox
    Par Alexand92 dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/04/2011, 23h23
  4. [MySQL] Enregistrer en BDD une requête Mysql contenant des variables PHP puis l'exécuter
    Par ChriGoLioNaDor dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/11/2009, 02h13
  5. [MySQL] Problème de syntaxe avec variable utilisée dans fonction PHP et MySQL
    Par redvivi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/03/2008, 21h07

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