Bonjour à tous.

J'ai un script qui doit :

  • au préalable selectionner les noms de fichiers prets pour le chargement
  • ensuite insérer les données des fichiers portant ce mot dans une base de données
  • par la suite il verifie que les données chargées sont les meme que celles que nous avons dans le repertoire
  • si les données sont les memes ou pas on insère les données dans la base etllogs.



Mais à l'exécution , on a :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
./test: line 13: syntax error near unexpected token `|'
./test: line 13: `for $nomfichier in [ $REQUETE | awk -F" " '{for (i=2; i<=NF; i++) print $i; system("echo");}' | sort -u ] '
Voici le script :

Code : 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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
PLATFORM="SMSC_"
TARGETDIR="/data/smsc/mvFiles"
Fdate=`date -d 'today' +"%Y-%m-%d"`
Ddate=`date -d 'today' +"%Y-%m-%d"`
AUJOURDHUI=`date -d 'today' +"%Y-%m-%d"`
nbLinesFiles=`wc -l $nomfic`
nbLinesInsert=`wc -l`
 
# Verifier que le fichier est pret a etre charge
REQUETE=`mysql -D etllogs -e "SELECT nomFichier FROM tbprechargement WHERE pretPourChargement=1"`;
 
#echo $REQUETE > test.log
 
#REQUETE2=`echo $REQUETE | awk -F" " '{for(i=2; i<=NF; i++) print $i; system("echo");}' `;
echo $REQUETE | awk -F" " '{for(i=2; i<=NF; i++) print $i; system("echo");}'| sort -u;
#echo $REQUETE2;
 
#chargement effectif des donnees
for $nomfichier in $REQUETE | awk -F" " '{for (i=2; i<=NF; i++) print $i; system("echo");}'| sort -u
   do
     awk -F '{
        sqlcode="INSERT INTO smsc VALUES('\''"$1" "$2"':00\'',"$3","$4","$5","$6","$7","$8","$9","$10","$11");"
        system("echo -n  '$AUJOURDHUI' '$begin'");
                         system("echo -n  \"" sqlcode "\"+E: ");
                         system("mysql -D qosva -e \"" sqlcode "\"");
                        system("echo  ");
}' >>loading
 
echo  $loading;
 
    if  diff <(cd $TARGETDIR; find . -printf "%p\t%s\n"|sort) <(cd $loading; find . -printf "%p\t%s\n"|sort)
   then
       echo " annuler le chargement"
       #insertion des donnees dans la base etllogs
       requete_1=`mysql -D etllogs -e "INSERT INTO metadata(nomFichier,nomPlateforme, nbLinesFile, dateChargementDonnees,dateDebutExec,dateFinExec, nbLinesInsert) VALUES('$TARGETDIR$nomfic', '$PLATFORM', '$AUJOURDHUI', '$Ddate', '$Fdate', '$NLinsert');"`
   else
      echo "le chargement est effectue"
      requete=`mysql -D etllogs -e "INSERT INTO metadata(nomFichier,nomPlateforme, nbLinesFile, dateChargementDonnees,dateDebutExec,dateFinExec, nbLinesInsert,etatChargement) VALUES('$nomfic', '$PLATFORM','$nbLinesFiles', '$AUJOURDHUI', '$Ddate', '$Fdate', '$nbLinesInsert');"`
 
exit
Merci d'avance de votre aide.