Lire un fichier ligne par ligne, ligne dans $var et encore plus
Résolu
LezardMoo
Messages postés
554
Date d'inscription
Statut
Membre
Dernière intervention
-
LezardMoo Messages postés 554 Date d'inscription Statut Membre Dernière intervention -
LezardMoo Messages postés 554 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde
je suis entrain de coder un script bash permettant d'executer des requetes sql se trouvant dans un fichier a raison d'une req par ligne.
je veux envoyer les 50 première req (ca c'est good) un ptit sleep de 30sec ensuite passer a la 51req juqsqu a la 101 ème ligne et ainsi de suite jusqua la fin du fichier (qui n'a pas toujours le meme nombre de requètes)
je ne vois pas comment je pourrais faire pour envoyer les req de 50 en 50 a partir de la 51ème...
Une idée???
Merci d'avance
je suis entrain de coder un script bash permettant d'executer des requetes sql se trouvant dans un fichier a raison d'une req par ligne.
je veux envoyer les 50 première req (ca c'est good) un ptit sleep de 30sec ensuite passer a la 51req juqsqu a la 101 ème ligne et ainsi de suite jusqua la fin du fichier (qui n'a pas toujours le meme nombre de requètes)
je ne vois pas comment je pourrais faire pour envoyer les req de 50 en 50 a partir de la 51ème...
Une idée???
Merci d'avance
A voir également:
- Lire un fichier ligne par ligne, ligne dans $var et encore plus
- Partager photos en ligne - Guide
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Mètre en ligne - Guide
- Lire un fichier epub - Guide
- Aller à la ligne excel - Guide
2 réponses
Salut,
Je comprends pas ton soucis. Vu que tu arrives à le faire pour les 50 premières, tu peux faire de même pour la suite ?
Je comprends pas ton soucis. Vu que tu arrives à le faire pour les 50 premières, tu peux faire de même pour la suite ?
ouep je sais c'est con xD
je n'arrive pas a voir comment je peux faire pour continuer justement...
voila le script en partie:
je n'arrive pas a voir comment je peux faire pour continuer justement...
voila le script en partie:
#!/bin/bash ## var connexion DB echo "choix du fichier" read file if [ ! $file ] ; then echo "le fichier n'existe pas" else line=1 while [ $line -lt 50 ] do req='head -$line $file' mysql --host --user --password --host base -e "$req" done fi
Et pourquoi ne pas utiliser une autre variable, que tu incrémentes à chaque tour de boucle, et lorsqu'elle arrive à 50, tu fais ton sleep, puis tu remet à 0 cette variable ?
Du coup, tu lis ton fichier en entier dans ton while, et tu utilises cette variable pour gérer la lecture (et l'exécution de tes requêtes) 50 par 50.
Du coup, tu lis ton fichier en entier dans ton while, et tu utilises cette variable pour gérer la lecture (et l'exécution de tes requêtes) 50 par 50.
Pas de soucis
Un tuto de lecture de fichier https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne
Quelque chose comme ça je dirais. J'ai fais ça vite fais, juste pour te donner l'idée, mais la syntaxe est peut être pas top.
Un tuto de lecture de fichier https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne
SQL_exec=0 while read ligne do commande sql SQL_exec = 'expr $SQL_exec + 1' if [ $SQL_exec -eq 50 ] then sleep 30 SQL_exec=0 fi done < fichier
Quelque chose comme ça je dirais. J'ai fais ça vite fais, juste pour te donner l'idée, mais la syntaxe est peut être pas top.
J'ai un doute sur le +=1, de mémoire, ça passe pas sur tous les environnements, à tester sur le tiens :)
En fait, avec le while read ligne, tu vas lire tout ton fichier (je te laisse voir le tuto de CCM que je t'ai linké). Comme ça, tu vas lire ton fichier ligne par ligne, exécuter ta commande SQL (donc comme tu avais mis dans ton script), et également incrémenter une variable pour compter le nombre de commande que tu as exécuté. Il te suffit alors de réaliser un sleep toute les X commandes exécutées, puis en sortant du if, le script va continuer de parcourir le while, donc de lire ton fichier ligne par ligne.
J'ai pas la possibilité de le tester par contre, donc tout est théorique pour le moment, mais j'aurais fais comme ça.
En fait, avec le while read ligne, tu vas lire tout ton fichier (je te laisse voir le tuto de CCM que je t'ai linké). Comme ça, tu vas lire ton fichier ligne par ligne, exécuter ta commande SQL (donc comme tu avais mis dans ton script), et également incrémenter une variable pour compter le nombre de commande que tu as exécuté. Il te suffit alors de réaliser un sleep toute les X commandes exécutées, puis en sortant du if, le script va continuer de parcourir le while, donc de lire ton fichier ligne par ligne.
J'ai pas la possibilité de le tester par contre, donc tout est théorique pour le moment, mais j'aurais fais comme ça.