#1 Le 12/04/2011, à 13:53
- maverick62
[AIDE] Insérer données dans table SQL
Bonjour à tous,
Voilà, j'ai un script qui envoie des mails aléatoirement (normal entre 0 et 80, spam entre 80 et 95, virus 95/100), en local, pour un projet de relais smtp (antivirus et antispam), ce script me permet de générer des logs et ainsi des graphs (mailgraph).
Dans mon script, j'ai mis des logs sous cette forme :
Tue Apr 12 14:24:36 CEST 2011
39 normal
Tue Apr 12 14:24:59 CEST 2011
29 normal
Tue Apr 12 14:25:10 CEST 2011
97 virus
Bon jpeux créer une base SQL, pas de soucis, mais comment faire pour insérer ces logs dedans?
Genre avoir un tableau sous cette forme :
Tue Apr 12 14:24:36 | normal
Tue Apr 12 14:25:10 | virus
Comment dans mon script, je peux faire un truc comme ça :
INSERT INTO "logsmail" ("date", "type")
VALUES ("Tue Apr 12 14:25:10", "virus")
En gros, comment faire un INSERT avec un script...
Merci beaucoup de partager vos idées.
Bien Amicalement,
Hors ligne
#2 Le 12/04/2011, à 14:02
- yohann
Re : [AIDE] Insérer données dans table SQL
echo $sql | mysql -u $dbUser -p$dbPwd $dbName
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#3 Le 12/04/2011, à 14:32
- maverick62
Re : [AIDE] Insérer données dans table SQL
ok ok merci,
Alors en me loggant à la console SQL et en tapant cette requête [ INSERT INTO mailslog (id, date, type) VALUES(NULL, bonjour, aurevoir); ], ça fonctionne.
Ta commande pour me connecter fonctionne.
Mais avec le echo, ça foire
sql="INSERT INTO mailslog (id, date, type) VALUES(NULL, "azertyui", "qsdfghjk");"
echo $sql | mysql -u $USER -p$PASS $db#################################################################
./test
ERROR 1054 (42S22) at line 1: Unknown column 'azertyui' in 'field list'
Aurais tu une idée?
Jpense que ce sont les guillemets mais jsuis pas sûr. J'ai essayé avec les valeurs azertyui et l'autre sans guillemets, c'est pareil ...
Merci pour votre aide,
Hors ligne
#4 Le 12/04/2011, à 14:51
- yohann
Re : [AIDE] Insérer données dans table SQL
c'est sur que c'est les guillement qui foirent le truc
essaye:
sql="INSERT INTO mailslog (id, date, type) VALUES(NULL, 'azertyui', 'qsdfghjk');"
echo $sql | mysql -u $USER -p$PASS $db
Dernière modification par yohann (Le 12/04/2011, à 14:51)
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#5 Le 12/04/2011, à 16:15
- maverick62
Re : [AIDE] Insérer données dans table SQL
Oui bien joué, t'aurais pas une régle concernant les " et les ' ?
Et j'ai réussi à remplacer mes valeurs par des variables, ce qui donne pour les interessés :
#!/bin/bash
USER=monuser
PASS=monpass
db=dbname
myval=foo
maval=barsql="INSERT INTO base (id, date, type) VALUES(NULL, ' "$myval" ', ' "$maval" ');"
echo $sql | mysql -u $USER -p$PASS $db
Hors ligne
#6 Le 12/04/2011, à 17:02
- yohann
Re : [AIDE] Insérer données dans table SQL
ben la regle est variable selon les langage, mais en général si on défini une chaine de caractère " et ' sont équivalent, par contre si on commence une chaine avec ", on la termine avec ", idem pour '
par exemple
sql="INSERT INTO mailslog (id, date, type) VALUES(NULL, "azertyui", "qsdfghjk");"
sql vaut INSERT INTO mailslog (id, date, type) VALUES(NULL,
et ensuite il y a l'instruction azertyui", "qsdfghjk");" qui provoque une erreur bash
sql="INSERT INTO mailslog (id, date, type) VALUES(NULL, 'azertyui', 'qsdfghjk');"
sql vaut INSERT INTO mailslog (id, date, type) VALUES(NULL, 'azertyui', 'qsdfghjk');
car les ' n'arretes pas une chaine commencé avec "
on aurait aussi pu mettre
sql='INSERT INTO mailslog (id, date, type) VALUES(NULL, "azertyui", "qsdfghjk");'
car les " n'arrete pas une chaine commencé avec '
ou encore
sql="INSERT INTO mailslog (id, date, type) VALUES(NULL, \"azertyui\", \"qsdfghjk\");"
car les " sont échapé, et donc ne compte pas pour arreté la chaine
(cette dernière écriture est intéréssante si il y a des apostrophes dans les données à utiliser)
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#7 Le 12/04/2011, à 23:04
- HP
Re : [AIDE] Insérer données dans table SQL
Bon courage du shell bash/sh pour faire du sql… ou comment perdre du temps avec des outils inadaptés…
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne