Récupérer erreurs sql dans un script shell
notkinvi
-
notkinvi -
notkinvi -
Bonjour,
Je viens solliciter votre aider pour finir mon programme shell.
Je réalise un programme shell sous Linux pour automatiser l'importation de données dans une base de données mysql.
Chaque fichier contient des milliers de lignes avec un nombre variable de champs.
Pour faire l'importation, je prépare dans mon shell un fichier contenant une chaine sql "insert into maTable(...) values (...);" que j'exécute comme ceci:
mysql --user=userName --password=userPassword -D maBaseDeDonnees < fichierSQL
En général cela fonctionne mais lorsqu'il se produit une erreur, il s'affiche sur le output standard.
Je souhaiterais plutôt rediriger les éventuelles erreurs dans un fichier afin de pouvoir les traiter ultérieurement.
J'ai essaye ceci sans succès:
mysql --user=userName --password=userPassword -D maBaseDeDonnees < fichierSQL > fichierOutput
Je vous serais vraiment reconnaissant si quelqu'un peut m'aider a trouver comment rediriger les erreurs mysql vers un fichier.
Merci par avance
notkinvi
Je viens solliciter votre aider pour finir mon programme shell.
Je réalise un programme shell sous Linux pour automatiser l'importation de données dans une base de données mysql.
Chaque fichier contient des milliers de lignes avec un nombre variable de champs.
Pour faire l'importation, je prépare dans mon shell un fichier contenant une chaine sql "insert into maTable(...) values (...);" que j'exécute comme ceci:
mysql --user=userName --password=userPassword -D maBaseDeDonnees < fichierSQL
En général cela fonctionne mais lorsqu'il se produit une erreur, il s'affiche sur le output standard.
Je souhaiterais plutôt rediriger les éventuelles erreurs dans un fichier afin de pouvoir les traiter ultérieurement.
J'ai essaye ceci sans succès:
mysql --user=userName --password=userPassword -D maBaseDeDonnees < fichierSQL > fichierOutput
Je vous serais vraiment reconnaissant si quelqu'un peut m'aider a trouver comment rediriger les erreurs mysql vers un fichier.
Merci par avance
notkinvi
A voir également:
- Récupérer erreurs sql dans un script shell
- Classic shell - Télécharger - Personnalisation
- Comment recuperer un message supprimé sur whatsapp - Guide
- Script vidéo youtube - Guide
- Comment récupérer un document dans le presse-papier samsung - Guide
- Comment récupérer un compte facebook piraté - Guide
1 réponse
Pour rediriger la sortie d'erreur et la sortie standard il faut utiliser les opérateurs 1> et/ou 2>. Exemple avec un petit programme en C++ dont le code est :
Quand je lance le programme j'écris dans la console aussi bien ce qui est écrit dans la sortie d'erreur et la sortie standard :
À présent effectuons une redirection de la sortie standard dans plop.1 et de la sortie d'erreur dans plop.2 :
Tu peux aussi rediriger les deux flux vers un même fichier :
Normalement tu es sensé pourvoir écrire :
... mais pour une raison qui m'échappe il redirige mal le flux :s
Bonne chance
#include <iostream>
int main(){
std::cout << "J'écris sur la sortie standard" << std::endl;
std::cerr << "J'écris sur la sortie d'erreur" << std::endl;
return 0;
}
Quand je lance le programme j'écris dans la console aussi bien ce qui est écrit dans la sortie d'erreur et la sortie standard :
(mando@aldur) (~) $ g++ -W -Wall plop.cpp (mando@aldur) (~) $ ./a.out J'écris sur la sortie standard J'écris sur la sortie d'erreur
À présent effectuons une redirection de la sortie standard dans plop.1 et de la sortie d'erreur dans plop.2 :
(mando@aldur) (~) $ ./a.out 1> plop.1 2>plop.2 (mando@aldur) (~) $ cat plop.1 J'écris sur la sortie standard (mando@aldur) (~) $ cat plop.2 J'écris sur la sortie d'erreurPar contre > ne redirige que la sortie standard :
(mando@aldur) (~) $ ./a.out > plop.3 J'écris sur la sortie d'erreur (mando@aldur) (~) $ cat plop.3 J'écris sur la sortie standard
Tu peux aussi rediriger les deux flux vers un même fichier :
(mando@aldur) (~) $ rm plop.4 (mando@aldur) (~) $ ./a.out 1>>plop.4 2>>plop.4 (mando@aldur) (~) $ cat plop.4 J'écris sur la sortie standard J'écris sur la sortie d'erreur
Normalement tu es sensé pourvoir écrire :
./a.out 2>&1 > plop.4
... mais pour une raison qui m'échappe il redirige mal le flux :s
Bonne chance
Ta réponse m'est fort utile.
Je pense déjà que cela va résoudre mon problème.
Je reviens juste après exécution
Merci infiniment