Forum Programmation.shell extraction d'une requete SQL dans shell

Posté par  .
Étiquettes : aucune
0
22
jan.
2007
bonjour à tous,

J'aimerais appliquer, une requete SQL, dans un cron (AIX, 5.3),
via un shell, en KSH.

j'ai la requete mais je voudrais qu'elle soit appliquer correctement à mon shell. voici le select :



#select count(*) from owlaccount where timestamp like '$JOURSEMAINE-$MOIS-$JOUR $HEURE%';

Merci pour les reponses.
  • # Pipe, >

    Posté par  . Évalué à 2.

    echo "select count(*) from owlaccount where timestamp like '$JOURSEMAINE-$MOIS-$JOUR $HEURE%';" | mysql > resultats.txt

    En remplaçant mysql par le moniteur de ta base de données.
    C'est quel SGBD, au fait ?
    • [^] # Re: Pipe, >

      Posté par  . Évalué à 1.

      Merci pour la reponse,

      Base Oracle,

      mon probleme est pratiquement réglé, là j'ai un petit détail à affiner pour
      etre bon, mon soucis ce situ au niveau de la conversion de heure, le format horraire sur la base est en (UK) AM/PM mais par contre sur AIX c'est en FR (12/24), j'ai du mal avec la synthaxe pour introduire la "case"

      si qq'un pouvait m'éclairer, merci les gars pour votre coopération...

      Je peux eventuellement posé le la 1er partie du script pour donner une idée au besoin...

      file_sql=requete.sql
      path_sqlplus=/exec/products/oracle/v10.2.0/bin
      ORACLE_BASE=/exec/products/oracle
      ORACLE_SID=RMSPOW1
      database=$ORACLE_SID
      ORACLE_HOME=/exec/products/oracle/v10.2.0

      #TIMESTAMP Thu Jan 18 19:28:25 NFT 2007
      JOURSEMAINE=`date |cut -c 1-3`
      #Thu
      MOIS=`date |cut -c 5-7`
      #Jan
      JOUR=`date |cut -c 9-10`
      HEURE=`date |cut -c 12-13`
      #MINUTE

      echo "Exécution du fichier contenant la requete"

      echo "test" $JOURSEMAINE $MOIS $JOUR $HEURE

      # $path_sqlplus/sqlplus $user/$password

      #$path_sqlplus/sqlplus $user/$password@$database $file_sql

      #VALUE=`sqlplus -silent "/ " <<END

      #set pagesize 0 feedback off verify off heading off echo off

      #select count(*) from owlaccount where timestamp like '18-DEC-06 10%';

      #select count(*) from owlaccount where timestamp like '$JOURSEMAINE-$MOIS-$JOUR $HEURE%';

      if [ $HEURE

      exit;
      END`

      if [ -z "$VALUE" ]; then
      echo "No rows returned from database"
      fi

      #case "$HEURE" in

      model1).......
      • [^] # Re: Pipe, >

        Posté par  . Évalué à 1.

        je pense qu'il y a plus simple. Si j'ai bien compris tu veux sélectionner certaines lignes de la table par rapport à la date courante, ce qui peut s'écrire :

        select count(*) from owlaccount where timestamp like to_char(sysdate, 'DY-MON-YY HH24') || '%' ;

        - sysdate renvoie l'heure et date courante
        - to_char permet de formater une date/heure. Je te renvoie à la doc Oracle (RTFM !) ou à http://oracle.developpez.com/faq/?page=3-1#sysdatetochar

        Si la fonction te renvoie des dates formatées en français, tu peux forcer le format UK en faisant au début du script sql :

        alter session set nls_date_language=english;

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.