Posez votre question Signaler

Mysql avec crontab [Résolu]

MrSlave - Dernière réponse le 25 avril 2008 à 15:16
Bonjour,
Je suis en stage de fin d'étude en entreprise et je dois réaliser un site extranet pour les clients. Jusque là pas de prolèmes. Je devais récupérer les données du CRM et les transférer dans la DMZ et à partir de là vider ma table et charger le fichier texte dans ma bd toutes les nuit.
Le côté mysql donnera quelque chose du genre :
delete from nomtable;
load data infile 'cheminfichier.txt' ignore into table nomtable fields terminated by ';'
Le problème c'est que je ne vois pas trop quoi mettre dans le fichier que mon crontab executera.
Je ne dois pas mettre que les requetes ?
Lire la suite 

Mysql avec crontab »

12 réponses
Réponse
+1
moins plus
Salut,

pas besoin de script shell

voici un exemple

j'écrit un fichier .sql

et je le lance avec la commande mysql -u root -p'mot de passe' < fichier.sql
Dans mon cas je n'ai pas le mot de passe donc il suffit
mysql -u root -p < fichier.sql
Et je fait entrer à la demande de mot de passe

Le fichier db_abc.sql
lami20j@debian:~$ cat db_abc.sql
CREATE DATABASE abc;
USE abc;
create table personne(id int NOT NULL auto_increment,nom varchar(30),prenom varchar(50),age int,primary key(id));


Le résultat des tests
lami20j@debian:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.0.32-Debian_7etch5-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Personne           |
| aaa                |
| c_linux_perl       |
| joomla             |
| logs_apache        |
| mysql              |
+--------------------+
7 rows in set (0.00 sec)

mysql> exit
Bye
lami20j@debian:~$ mysql -u root -p < db_abc.sql
Enter password:
lami20j@debian:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.0.32-Debian_7etch5-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Personne           |
| aaa                |
| abc                |
| c_linux_perl       |
| joomla             |
| logs_apache        |
| mysql              |
+--------------------+
8 rows in set (0.00 sec)

mysql> use abc;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------+
| Tables_in_abc |
+---------------+
| personne      |
+---------------+
1 row in set (0.00 sec)

mysql> desc personne;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| nom    | varchar(30) | YES  |     | NULL    |                |
| prenom | varchar(50) | YES  |     | NULL    |                |
| age    | int(11)     | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
4 rows in set (0.04 sec)

mysql> exit
Bye
lami20j@debian:~
La commande en gras tu la mets dans crontab.
lami20j - 25 avril 2008 à 15:09
Tandis qu'en planquant tout ça dans un script, ils ne voient rien dans la crontab...
je suis d'accord avec toi, dans ce cas, sans doute qu'il vaut mieux écrire un script

HostOfSeraphim - 25 avril 2008 à 15:10
Après tout dépend, peut-être que dans son cas, afficher le mot de passe n'est pas très important, des fois que tout le monde autour le connaisse.
lami20j - 25 avril 2008 à 15:16
Que ça soit ou pas avec un script, la méthode est la même.
En revanche, pour des raisons de sécurité ainsi que pour l'apprentissage des bonnes habitudes, l'utilisation d'un script shell et souhaitable.
Ajouter un commentaire
Réponse
+0
moins plus
Tu peux faire un script shell qui se connecte à la base et passe les requêtes. Dans la crontab, tu n'as plus qu'à appeler le script en question.
Ajouter un commentaire
Réponse
+0
moins plus
Le problème c'est que je suis un gros noob en linux et c'est justement dans mon script que je ne vois pas quoi mettre. :s
Quelque chose comme :

mysql --user=monuser --password=monpass
delete from nomtable;
load data infile 'cheminfichier.txt' ignore into table nomtable fields terminated by ';'

?
HostOfSeraphim - 25 avril 2008 à 14:43
Fais-toi un fichier script.sql avec tes requêtes à passer.

Puis, dans un script shell :

/usr/local/mysql/bin/mysql -u root -pmotdepasse -D nombase < script.sql

A adapter au besoin.
lami20j - 25 avril 2008 à 14:51
Salut,

plus rapide que moi ;-))
Ajouter un commentaire
Réponse
+0
moins plus
Merci de ton aide.
J'éssaye ça tout de suite. ;)
Ajouter un commentaire
Ce document intitulé « Mysql avec crontab » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?