Chaine de caractères paramétrée
j_charles
Messages postés
1
Statut
Membre
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je souhaite générer un fichier de requêtes SQL à parti d'un fichier CSV.
J'ai écrit le script suivant et je voudrais que dans REQUETE_TMP, ${valx} soit remplacé par la valeur lue dans le fichier.
Mais
ou bien les paramètres de la requête ne sont pas interprétés et restent à ${valx}
ou bien ils sont interprétés trop vite et leur valeur est vide.
#!/bin/sh
REQUETE='INSERT INTO TA01 (champ1, champ2, champ3, champ4) VALUES ${val1} , ${val2}, ${val3}, ${val4};'
traiter()
{
cat test.csv | while IFS=';' read val1 val2 val3 val4
do
echo ${val1} ${val2} ${val3} ${val4}
REQUETE_TMP="${REQUETE}"
echo "${REQUETE_TMP}" >> result.sql
done
}
traiter
#FIN
Est-ce que vous avez une idée ?
Merci
Jean-Charles.
Je souhaite générer un fichier de requêtes SQL à parti d'un fichier CSV.
J'ai écrit le script suivant et je voudrais que dans REQUETE_TMP, ${valx} soit remplacé par la valeur lue dans le fichier.
Mais
ou bien les paramètres de la requête ne sont pas interprétés et restent à ${valx}
ou bien ils sont interprétés trop vite et leur valeur est vide.
#!/bin/sh
REQUETE='INSERT INTO TA01 (champ1, champ2, champ3, champ4) VALUES ${val1} , ${val2}, ${val3}, ${val4};'
traiter()
{
cat test.csv | while IFS=';' read val1 val2 val3 val4
do
echo ${val1} ${val2} ${val3} ${val4}
REQUETE_TMP="${REQUETE}"
echo "${REQUETE_TMP}" >> result.sql
done
}
traiter
#FIN
Est-ce que vous avez une idée ?
Merci
Jean-Charles.
Configuration: Windows XP Internet Explorer 6.0
3 réponses
-
Salut,
Entoure la valeur de ta variable "REQUETE" par des quotes doubles et non des quotes simples :REQUETE="..."
;-))
-
Avec les guillemets, ma requête devient systématiquement
INSERT INTO TA01 (champ1, champ2, champ3, champ4) VALUES , , , ;
puisque à l'initialisation de REQUETE, les paramètres ${val1} ${val2} ${val3} et ${val4} ne sont pas encore initialisés
Jean-Charles. -
Salut,
Alors essaye avec "eval" :[tmpfs]$ REQUETE='$var' [tmpfs]$ echo $REQUETE $var [tmpfs]$ var="coucou" [tmpfs]$ echo "$REQUETE" $var [tmpfs]$ eval echo "$REQUETE" coucou [tmpfs]$
;-))