Rechercher : dans
Par :

Mysql avec crontab

Dernière réponse le 25 avr 2008 à 15:16:01 MrSlave, le 25 avr 2008 à 14:31:58 
 Signaler ce message aux modérateurs

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 ?

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Mysql avec crontab » dans :
Importer et exporter des données sous MySQL Voir Importation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
MySQL - Installation sous Windows Voir Présentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
Réinitialiser le mot de passe root de MySQL VoirQue ce soit lors de la première installation ou après la perte du mot de passe principal de MySQL, il est nécessaire de pouvoir modifier le mot de passe administrateur (root) de MySQL. Vous avez perdu le mot de passe root de MySQL ? Pour pouvoir...
MySQL – Optimisation VoirL’optimisation au niveau de MySQL passe par trois composants, à savoir : Optimisation du serveur MySQL Optimisation de la base de données Optimisation des requêtes Optimisation de la configuration de serveur MySQL L’optimisation du serveur peut...
Administration de MySQL VoirLa base de données mysql Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

HostOfSeraphim, le 25 avr 2008 à 14:34:33

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.
Configuration : Linux Ubuntu 7.10 Gusty Gibbon / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

2

MrSlave, le 25 avr 2008 à 14:39:16

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 ';'

?

Répondre à MrSlave

3

HostOfSeraphim, le 25 avr 2008 à 14:43:54

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.
Configuration : Linux Ubuntu 7.10 Gusty Gibbon / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

6

lami20j, le 25 avr 2008 à 14:51:25

Salut,

plus rapide que moi ;-)) 106485010510997108

Répondre à lami20j

4

MrSlave, le 25 avr 2008 à 14:46:57

Merci de ton aide.
J'éssaye ça tout de suite. ;)

Répondre à MrSlave

5

lami20j, le 25 avr 2008 à 14:50:00

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. 106485010510997108

Répondre à lami20j

7

HostOfSeraphim, le 25 avr 2008 à 14:52:30

Certes, mais un mot de passe qui apparaît dans une crontab, bof bof (si on considère que sa connexion nécessite un mot de passe).
Configuration : Linux Ubuntu 7.10 Gusty Gibbon / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

8

lami20j, le 25 avr 2008 à 14:59:24

Ca sera pareil pour le script shell ;-))
Que ça soit dans le cron ou dans le script shell c'est pareil, c'est toujours un fichier. 106485010510997108

Répondre à lami20j

9

HostOfSeraphim, le 25 avr 2008 à 15:05:05

Un petit exemple...

Je travaille sur un programme informatique dont la maintenance et le développement est assuré par une entreprise sous-traitante. Les données du programme sont confidentielles, le sous-traitant ne doit pas voir certaines infos, notamment les mots de passe des bases de données.

Régulièrement, quand il y a un problème, ils viennent me voir pour savoir dans quel ordre les taches sont lancées le matin (il s'agit d'une application lourde qui met un moment à démarrer). Si le mot de passe apparaît dans la crontab... ils ne sont pas aveugles et voient le mot de passe. Tandis qu'en planquant tout ça dans un script, ils ne voient rien dans la crontab...

Ils peuvent regarder le fichier lancé, ça oui... mais ils ne peuvent pas le faire sans mon accord, et si je veux bien, je prends soin de dégager le mot de passe avant.

Le problème de la crontab, c'est que si j'y avais des mots de passe en clair, je n'oserais plus trop y toucher de peur que quelqu'un soit derrière mon dos et lise mon écran... si y'a des mots de passe affichés, c'est ballot.

Configuration : Linux Ubuntu 7.10 Gusty Gibbon / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

10

lami20j, le 25 avr 2008 à 15:09:33

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

106485010510997108

Répondre à lami20j

11

HostOfSeraphim, le 25 avr 2008 à 15:10:48

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.
Configuration : Linux Ubuntu 7.10 Gusty Gibbon / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

12

 lami20j, le 25 avr 2008 à 15:16:01

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.
106485010510997108

Répondre à lami20j