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 :

probleme d import dans une base de données


Sujet :

SGBD Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Points : 78
    Points
    78
    Par défaut probleme d import dans une base de données
    Bonjour a tous,
    j ai un peiti probleme d import dana la base de donnée.

    J ai programmer pour importer un fichier csv de donnée dans la table d une base de données. Mais le soucy c est qu il me rempli rien alors que le fichier me parait rempli. Comment puis faire pour verifier qu il est bien fermé !!!!!

    j ai un close mais j ai doute car si je lance la fonction a part c est a dire sans effectuer un import a partir du programme principal la base de remplie. J ai l impression que le fichier n est pas fermé !

    Merci D avance Jules

    voila mon prog d import :

    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
     
    #!/usr/bin/perl
    use strict;
    use DBI;
    package sous_fonc_import_base_partie_2 ;
    #Module base de donnees
    sub Fonct_Import_Data_partie_2
    {
            print"\nTOTO\n";
            my $dbh = DBI->connect("DBI:mysql:Outils_LAN","jules_rtp","jules") || die "Echec de la connection";
            #my $variable_ma_base de_donnees =
            #DBI->connect=connexion a la database
            #("DBI:mysql:switch_sxb"=nom de la database,"jules"=user,"jules"=password) || die "Echec de la connection";
            $dbh->do("DELETE FROM IP_MAC_Cross_Over");
            #Ici on specifie la table
            $dbh->do("LOAD DATA LOCAL INFILE  '/home/rappju/projet_2/FINAL.csv' REPLACE INTO TABLE IP_MAC_Cross_Over FIELDS TERMINATED BY ';'");
            $dbh->disconnect;
    }
    1;
    #&Fonct_Import_Data_partie_2

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 851
    Points : 4 743
    Points
    4 743
    Par défaut
    Si tu pouvais écrire en meilleur français, ce serait encore mieux.
    Merci de faire attention à votre style d'écriture.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Points : 78
    Points
    78
    Par défaut
    Oui c est vrai j ai écrit un tres mauvais francais. Et c'est pourquoi je vais reformuler ma question. Existe t-il une méthode pour forcer la fermeture de l'ensemble des fichiers ouverts ?

    Encore mes excuses
    Jules

  4. #4
    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, finir le programme (avec un exit() ou en atteignant la fin du script)... Mais pourquoi aurais-tu besoin de faire ça ? D'autant que dans ton snippet tu n'ouvres aucun fichier (ou plutôt tu n'ouvres aucun fichier par l'intermédiaire de Perl).
    Quel est ton problème finalement ? Ton programme marche-t-il ou pas ?

    --
    Jedaï

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Points : 78
    Points
    78
    Par défaut
    Merci je vais essayer avec un exit en faite ce qui ce passe c est que j ai un tres long programme perl qui alimente un fichier ! et tout a la fin alors que le fichier est normallment fermé j ai un import de ce fichier dans une base sauf que la le fichier est bien rempli mais la base est vide ! et la ou ca devient tordu c est lorsque je lance l import apres la fin du programme et ben la la base est remplie !!!!!
    et oui j avais bien dit c est tordu donc en faite j ai l impression que mon fichier est pas fermé.

    merci Jules

  6. #6
    Membre éclairé
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Points : 773
    Points
    773
    Par défaut
    tu n'as pas un message d'erreur quelque part à nous mettre sous la dent.
    Quand tu dis que tu charges les données à partir de ton fichier après avoir fermé le programme, tu exécutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOAD DATA LOCAL INFILE  '/home/rappju/projet_2/FINAL.csv' REPLACE INTO TABLE IP_MAC_Cross_Over FIELDS TERMINATED BY ';
    en ligne de commande sous mysql?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Points : 78
    Points
    78
    Par défaut
    Ben non justement c est la le HIC j ai pas de message d erreur qet quand je dit que lance mon module import tout seul c est en enlevant le commentaire devant #&Fonct_Import_Data_partie_2
    et je fais ./importbase



    Donc voila!
    Jules

  8. #8
    Membre éclairé
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Points : 773
    Points
    773
    Par défaut
    done le caude ki à pelle t'a fonk scions Fonct_Import_Data_partie_2

    PS : essaies de décrire ton problème de façon intelligible de façon à ce qu'on n'ait pas besoin de relire 10 fois ce que tu écris pour comprendre, question de respect, tout le monde est pressé alors relis toi avant de poster STP

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Points : 78
    Points
    78
    Par défaut
    Voila mon code que je lance et la base est bien remplie a partir du fichier csv:

    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
     
     
    #!/usr/bin/perl
    use strict;
    use DBI;
    package sous_fonc_import_base_partie_2 ;
    #Module base de donnees
    sub Fonct_Import_Data_partie_2
    {
            print"\nTOTO\n";
            my $dbh = DBI->connect("DBI:mysql:Outils_LAN","jules_rtp","jules") || die "Echec de la connection";
            #my $variable_ma_base de_donnees =
            #DBI->connect=connexion a la database
            #("DBI:mysql:switch_sxb"=nom de la database,"jules"=user,"jules"=password) || die "Echec de la connection";
            $dbh->do("DELETE FROM IP_MAC_Cross_Over");
            #Ici on specifie la table
            $dbh->do("LOAD DATA LOCAL INFILE  '/home/rappju/projet_2/FINAL.csv' REPLACE INTO TABLE IP_MAC_Cross_Over FIELDS TERMINATED BY ';'");
            $dbh->disconnect;
    }
    1;
    &Fonct_Import_Data_partie_2

    et en ligne de comande je fais un ./sous_fonc_import_base_partie_2

    et hop la base est remplie !!!!

    Et le hic c est que ce petit module je l appelle dans un programme principal et une fois fini sans aucune erreur la base n est pas remplie !!!!! Je suspecte que le fichier qui est utilise pour remplir la base n est pas fermé !!!pourtant le close est bien présent pour fermer le fichier !

    Donc je sais aps trop d ou vient l erreur
    Jules
    j espere faire preuve de clarté !

  10. #10
    Membre éclairé
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Points : 773
    Points
    773
    Par défaut
    en fait c'est le code de ton script principal que je voudrais.
    As-tu essayé de copier/renommer ce fichier csv dans ton prog principal? S'il n'est pas fermé, il devrait te jeter.
    Es-tu sûr que le nom de fichier est le même entre ton prog princal et ta fonction?
    PS : Tu devrais peut-être passer le nom du fichier en argument de ta fonction

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Points : 78
    Points
    78
    Par défaut
    Petite question comment faire pour le renommer ?
    avec des comande bash inseré dans mon script perl ?

  12. #12
    Membre éclairé
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Points : 773
    Points
    773
    Par défaut
    rename("file.txt", "file-old.txt") || die "Cannot rename file.txt: $!";

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 197
    Points : 78
    Points
    78
    Par défaut
    Oki merci je vais tester !!
    Jules

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/03/2016, 18h28
  2. [Débutant] probleme d'insertion dans une base de donnée
    Par safailizabet dans le forum VB.NET
    Réponses: 12
    Dernier message: 21/03/2012, 11h30
  3. Probleme d'insertion dans une base de donnée
    Par jubourbon dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/06/2009, 11h35
  4. [MySQL] Importer les données d'un fichier CSV dans une base de données
    Par joueur dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/11/2008, 12h59
  5. [Strategie][Java][XML] Import dans une base de données
    Par nad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 23/09/2002, 12h12

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