Script d'insertion

Résolu
Bebendiaye -  
 Bebendiaye -
Bonjour,

Merci de m'aider,
j'ai deux fichiers fich.sql et fich.txt

Dans fich.sql
select * from tb where mat in ()

dans fich.txt
|07864670434|HG|
|35687905435|EDHG|
|98767431212|OUKHGKKJ|

Pouvez vous m'aider a avoir un script shell qui va inserer ds la requete les valeurs du fich.txt
cad:
select * from tb where mat in ('07864670434','35687905435','98767431212')

Pour cet exemple fich.txt a trois enregistrements il peux en avoir 500 enregistrements.

3 réponses

  1. Bebendiaye
     
    je ne vois pas comment!!
    je dois recevoir regulierement fich.txt pour generer le fichier fich.sql avec le meme contenu seul les valeurs entre parenthese varie.
    cad :('07864670434','35687905435','98767431212')
    0
    1. Bebendiaye
       
      Hellllllo Merci de m'aider
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    A adapter à tes besoins...

    [tmpfs]$ cat fich
    |07864670434|HG|
    |35687905435|EDHG|
    |98767431212|OUKHGKKJ|
    [tmpfs]$ cat foo.sh
    #! /bin/sh
    
    #set -xv
    
    RECUP=$(egrep -o '[[:digit:]]+' fich)
    DATA=$(echo $RECUP | sed "s/^\|$/'/g;s/ /','/g")
    
    echo "select * from tb where mat in (${DATA})"
    
    [tmpfs]$ ./foo.sh
    select * from tb where mat in ('07864670434','35687905435','98767431212')
    [tmpfs]$

    ;-))
    0
    1. Bebendiaye
       
      j'ai des pb sur l'opion -o

      D:\APBATCH\AP BATCH\SCRIPT_PROD\prod24\phase2>sh foo.sh
      egrep: Unknown option -o
      Usage: egrep [-clqinsvx] [-bI] [-e pattern] [-f patternfile] [pattern] [file ...]
      select * from tb where mat in ()

      D:\APBATCH\AP BATCH\SCRIPT_PROD\prod24\phase2>PAUSE
      Appuyez sur une touche pour continuer...
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Emploies "sed" à la place :

      RECUP=$(sed 's/[^[:digit:]]//g' fich)
      0
    3. Bebendiaye
       
      ca marche mais si le fich contient qui des nombre il prend tous les nombre.
      il ne doit prendre que les onze premier numbre c'est a dire la premier colonne.
      exemple:

      |07864670434|6535|MLDHLH|
      |35687905435|093073HG|07309|
      |98767431212|OUKHGKKJ|875385|
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      [tmpfs]$ cat fich
      |07864670434|6535|MLDHLH|
      |35687905435|093073HG|07309|
      |98767431212|OUKHGKKJ|875385|
      
      [tmpfs]$ cat foo.sh
      #! /bin/sh
      
      #set -xv
      
      RECUP=$(awk -F"|" '{ print $2 }' fich)
      DATA=$(echo $RECUP | sed "s/^\|$/'/g;s/ /','/g")
      
      echo "select * from tb where mat in (${DATA})"
      
      [tmpfs]$ ./foo.sh
      select * from tb where mat in ('07864670434','35687905435','98767431212')
      [tmpfs]$

      ;-))
      0
    5. Bebendiaye
       
      Merci ca marche je vous remerci et bonne apres midi
      0