Script d'insertion [Résolu/Fermé]

Signaler
-
 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

Messages postés
29277
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
3 septembre 2020
6 927
Ça doit se faire avec un LOAD DATA bien réglé :
https://dev.mysql.com/doc/refman/8.0/en/load-data.html

Bonne chacne
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')
Hellllllo Merci de m'aider
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 764
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]$

;-))
Merci ca marche je vous remerci et bonne apres midi
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 764
De rien et bonne fin d'après-midi à toi aussi ;-)
je suis desole je me sous trompe pour mon fichier fich , il ny pas de "|" au debut
c'est pluto ca
07864670434|6535|MLDHLH|
35687905435|093073HG|07309|
98767431212|OUKHGKKJ|875385|
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 764
RECUP=$(awk -F"|" '{ print $1 }' fich)
merci encore une fois de plus