Script d'insertion
Résolu
Bebendiaye
-
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.
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
-
Ç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') -
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]$
;-))
-
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... -
-
-
[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]$
;-)) -
-