Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 :

Mes logs a écrit :

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 hmm

script a écrit :

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 :

Insert sql en bash a écrit :

#!/bin/bash

USER=monuser
PASS=monpass
db=dbname
myval=foo
maval=bar

sql="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… roll


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne