j'ai un fichier du genre
date_arg1_arg2_arg3_arg4
date_arg1_arg2_arg3_arg4
date_arg1_arg2_arg3_arg4
date_arg1_arg2_arg3_arg4
et je souhaite le parcourir et l'interprêter de manière à faire de chaque ligne une requete mysql genre:
select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";
Je suis sur une piste avec
---------------------------------
requete=`awk 'BEGIN {
FS="_"
RS="\n"
}
$5 = "Compression"{
print "mysql -u user -B -s -D MaBase -e \"select $2, $3 from $4;\"\n"
}' MonFichier.log`
$requete
--------------------------------
mais ça tente juste de m'exécuter une requete du type :
select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";
Je touche au but mais je m'en sors pas...
Quelqu'un a une idée?
# quel est le problème ?
Posté par goeb . Évalué à 1.
Je ne vois pas bien quel est le problème. Il me semble que ce que tu veux obtenir est ce que tu obtiens...
[^] # Re: quel est le problème ?
Posté par jukilo . Évalué à 1.
je souhaite exécuter une requete directement à chaque ligne et non pas une fois le fichier parcouru. (à moins qu'il y ait une meilleure solution...)
en clair, je voufrais faire ça:
$select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";
$select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";
$select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";
et non pas
$select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";select arg1, arg2 from arg3 where arg4="bob" and date="2006-10-31";
Merci!
[^] # Re: quel est le problème ?
Posté par duaner . Évalué à -1.
[^] # Re: quel est le problème ?
Posté par jukilo . Évalué à 1.
ça m'apprendra à ne pas savoir lire le man!
En revanche ça me sort, en ayant enlevé les \ et \n:
system(mysql -u user -B -s -D MaBase -e "select $2, $3 from $4;")
==>
/bin/sh: 000select: command not found
/bin/sh: 000select: command not found
/bin/sh: 000select: command not found
/bin/sh: 000select: command not found
alors que ma commande
$mysql -u user -B -s -D MaBase -e "select $2, $3 from $4;"
fonctionne...
[^] # Re: quel est le problème ?
Posté par fearan . Évalué à 2.
les " permetteront le remplacement des $2 $3 $4 :)
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: quel est le problème ?
Posté par jukilo . Évalué à 1.
system("mysql -u user -B -s -D MaBase -e \"select statut from matable where numero=4;\" ")
fonctionne
mais pas
system("mysql -u user -B -s -D MaBase -e \"select statut from matable where nom='bob';\" ")
où j'obtiens le message suvant:
ERROR 1054 (42S22) at line 1: Unknown column 'bob' in 'where clause'
ERROR 1054 (42S22) at line 1: Unknown column 'bob' in 'where clause'
ERROR 1054 (42S22) at line 1: Unknown column 'bob' in 'where clause'
ERROR 1054 (42S22) at line 1: Unknown column 'bob' in 'where clause'
bref ça marche pour le numérique, mais pas pour les string
j'ai essayé system("mysql -u user -B -s -D MaBase -e \"select statut from matable where nom=\'bob\';\" ")
et system("mysql -u user -B -s -D MaBase -e \"select statut from matable where nom=\"bob\";\" ")
mais sans résultat...
[^] # RESOLU
Posté par jukilo . Évalué à 1.
cat monFichier | while read ligne
do
arg1=`echo $ligne | cut -d'_' -f1`
arg2=`echo $ligne | cut -d'_' -f2`
arg3=`echo $ligne | cut -d'_' -f3`
maCommandeSQL
done
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.