IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SGBD Perl Discussion :

[sgbd] Backup de tables MySQL auto, qqun sait ???


Sujet :

SGBD Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut [sgbd] Backup de tables MySQL auto, qqun sait ???
    Salut

    Explications :

    Je voudrais qu'un script perl déclenche un backup de deux tables avec une condition et ce toutes les 24 heures.

    Ces fichiers devront être en CSV et devront être backupé dans un répertoire sur un serveur FTP accessible donc...

    Pensez vous que celà est possible et si oui comment ?

    Merci de votre coup d'pouce

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Oui, ça devrait être très possible, en fait je ne vois pas très bien ce que tu veux demander ? Perl a un très bon support de MySQL et comme c'est un manipulateur de fichier né, il n'y a absolument aucun problème !
    Tu utilise un cron pour programmer son lancement et voilà....

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Je suis content de voir que toi aussi tu penses ça possible

    Mais tu n'aurais pas la solution ! lol

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    le bout de code suivant exporte le contenu d'une table TABLE_TOTO dans un fichier CSV (séparateur = ";" ) table_toto.csv :
    $serveur, c'est ta connexion au SGBD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    open(CSV, ">table_toto.csv") or die "err créa .csv : $!";
    $requete = $serveur->prepare("select * from TABLE_TOTO");
    $requete->execute();
    while (@_ = $requete->fetchrow_array) {
        print CSV join(";", @_);
        print CSV "\n";
    }
    close(CSV);
    Pour une gestion via FTP, voir peut être du côté du module Net::Telnet.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Ok c'est déjà pas mal ;à Merci

    Si jamais qqun y arrive en perl c'est vraiment cool !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    ça marche pô

    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    require("adm/conf/conf.php3");
     
     
    open(CSV, ">table_toto.csv") or die ("err créa .csv : $!"); 
    $requete = $sql_serveur,$sql_user,$sql_passwd->prepare("select * from TABLE_TOTO"); 
    $requete->execute(); 
    while (@_ = $requete->fetchrow_array) { 
        print CSV join(";", @_); 
        print CSV "\n"; 
    } 
    close(CSV);
    Et voilà l'erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Parse error: parse error, unexpected ',' in e:\websites\eba\backup.php3 on line 7
    Qu'est ce qu'il va pas ?[/code]

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Heu, question : tu programmes en Perl ou en PHP ??? Parce que si c'est du PHP (comme en témoigne ton require en début de code), tu n'es pas dans la bonne section, ici c'est Perl

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Ah merde
    La honte

    Non mais je connais rien en pearl, le seul truc que j'ai besoin c'est d'un script qui fasse ce que j'ai expliqué au dessus et comment le faire tourner.

    Tu penses que tu peux m'aider ?

    Car je vois pas comment ça se déclenche etc..

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Citation Envoyé par Joelindien
    Tu penses que tu peux m'aider ?
    En PHP, non
    En Perl, je ne sais pas comment gérer l'envoi de tes 2 csv via ftp

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Et en envoi par mail ?
    Ou en download direct quand on se pointe sur la page ?

    En c'est pas trop de l'envoi par FTP, c'est juste que ça sauvegarde le fichier csv dans un rep accessible par du ftp

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Citation Envoyé par Joelindien
    Et en envoi par mail ?
    Ou en download direct quand on se pointe sur la page ?
    Jamais géré d'envois de mail via Perl

    Citation Envoyé par Joelindien
    En c'est pas trop de l'envoi par FTP, c'est juste que ça sauvegarde le fichier csv dans un rep accessible par du ftp
    Créer un fichier en local dans un répertoire donné, fastoche en Perl comme en PHP

    On manque d'infos sur ce qui concerne ton blème.

    1) Quel est le SGBD que tu utilises ?
    2) Quel OS ?
    3) Le prog que tu veux doit-il être stocké sur le même ordi que le SGBD ?
    4) As-tu Perl ou PHP d'installé ?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Arioch

    1) Quel est le SGBD que tu utilises ?
    2) Quel OS ?
    3) Le prog que tu veux doit-il être stocké sur le même ordi que le SGBD ?
    4) As-tu Perl ou PHP d'installé ?
    1) J'utilise MySQL 3.23
    2) Linux Red Hat sur un Sun Cobalt Raq 550 ou 551 je sais plus exactement
    3) Oui
    4)Oui les deux sont installé

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Ok, tout ce que je peux faire, c'est un script Perl qui exporte tes 2 tables dans 2 fichiers csv distincts.

    Il te restera juste à insérer le script dans les tâches périodiques de ton OS (crontab) et voilà.

    Tu veux ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Oui je veux bien Merci

    Comment on touche à la crontab ?

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    laisse moi encore 10 min et je t'apporte le prog sur un plateau

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    C'est vraiment cool de ta part ! Merco beaucoup

  17. #17
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Voilà un bout de code qui ne fait que ça :
    - se connecte à la BDD MySql
    - exporte les enregistrements de 2 tables

    Il est tiré d'un code récent sur lequel je bosse (avec Perl + MySql 3.23 + Mandrake 9.0).

    Pour faire fonctionner ce code, il faudra :
    - faire un copié-collé de tout le code dans un fichier à enregistrer avec extension ".pl" (pas obligatoire mais bon)
    - changer les droits du fichier pour qu'il soit exécutable (chmod +x fichier.pl)
    - attribuer les valeurs correctes de ta base dans le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    #!/usr/bin/perl -w
    # Exporte le contenu de 2 tables MySql dans 2 fichiers CSV
    # Basé sur Perl version 5.8.0 et MySql 3.23
     
    # PRAGMAS/LIBRARIES
    use strict;
    use DBI;
     
    # CONSTANTES
    use constant	DATABASE	=> "DBI:mysql:TOTO";	# remplacer TOTO par vrai nom de la bdd
    use constant	USER		=> "TOTO";				# idem pour le nom du user
    use constant	PASSWD		=> "TOTO";				# idem pour son mot de passe
     
    # VARIABLES
    my $dbh;					# future connexion à MySql
    my $requete;				# pour traiter requètes SQL
    my %Table;
    	$Table{1} = "TRUC";		# à remplacer par les vrais noms des Tables ...
    	$Table{2} = "MUCHE";
    my %FicCsv;
    	$FicCsv{1} = "export$Table{1}.csv";
    	$FicCsv{2} = "export$Table{2}.csv";
    my $FicLog = "export.log";				# fichier log pour suivre un peu le déroulement du prog
     
    # connexion à MySql + création log
    open(STDERR, ">$FicLog") or die "err création $FicLog : !$\n";
    if (! ($dbh = DBI->connect(DATABASE, USER, PASSWD))) {
    	die "Connexion à MySql [ERREUR] : $!\n";
    }
     
    # exports des tables
    for (my $i = 1; $i <= 2; ++$i) {
    	open(CSV, "$FicCsv{$i}") or die "err création $FicCsv{$i} : !$\n";
    	warn "export de table $Table{$i} dans fichier $FicCsv{$i}\n";
    	$requete = $dbh->prepare("select * from $Table{$i}");
    	$requete->execute();
    	if ($DBI::errstr) {
    		die "impossible de récup les enregistrements : $DBI::errstr\n";
    	}
    	while (@_ = $requete->fetchrow_array) {
    		print CSV join(";", @_);
    		print CSV "\n";
    	}
    	close(CSV);
    	warn "export terminé\n";
    }
     
    # on se déco du SGBD en fin de traitement
    close(STDERR);
    $dbh->disconnect();
    En visuel, ça doit être mal indenté mais bon, en principe il marche.

    Voili voilou !

  18. #18
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 582
    Points : 2 030
    Points
    2 030
    Par défaut
    Dernier ajout : pour le nom du user, du mot de passe comme le nom des tables, respecte bien la casse, table "TOTO" est différente de table "toto" !

    Pour lancer ce prog en auto périodiquement, poste une question là dessus en rubrique Linux

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Ok merci beaucoup

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Bon bah j'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     Can't locate DBI.pm in @INC (@INC contains: /usr/lib/perl5/5.6.0/i386-linux /usr/lib/perl5/5.6.0 /usr/lib/perl5/site_perl/5.6.0/i386-linux /usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl/5.005/i386-linux /usr/lib/perl5/site_perl/5.005 /usr/lib/perl5/site_perl .) at ./eba_backup.pl line 7.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Script backup table Mysql en PDO
    Par legrandse dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/06/2015, 10h38
  2. Réponses: 1
    Dernier message: 15/03/2015, 11h07
  3. Erreur 145 sur table mysql
    Par ramses83 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2007, 21h09
  4. Lier des tables MySQL / numérotation auto
    Par alfigor dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/05/2006, 09h34
  5. Création de table MySQL
    Par dehbi dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/04/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo