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

Langage Perl Discussion :

lecture de fichier


Sujet :

Langage Perl

  1. #1
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut lecture de fichier
    Bonjour,
    J'essaye d'importer des données dans une base de données via Perl en utilisant le module DBI.
    J'ai repris l'exemple de Djibril dans ce tuto.

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    #!/usr/bin/perl -w
     
    use warnings; 
    use strict; 
    use diagnostics;
    use DBI;                    # Charger le module DBI 
    use vars qw/ $VERSION /;    # Version du script 
    $VERSION = '1.0'; 
     
    # Paramètres de connexion à la base de données 
    my $bd          = 'mybd; 
    my $serveur     = 'serv1';    # Il est possible de mettre une adresse IP 
    my $identifiant = 'bdd1';         # Identifiant 
    my $motdepasse  = 'bdd1pass';        # Nous n'avons pas de mot de passe 
     
    # Connexion à la base de données MySQL 
    my $dbh = DBI->connect("dbi:mysql:dbname=$bd;host=$serveur;", $identifiant, $motdepasse ) 
    or die "Connexion impossible a la base de donnees $bd !"; 
     
    # Création des tables 
    print "Creation de la table UltraSonTHERM\n"; 
     
    my $sql_creation_table_regions = <<"SQL";
    CREATE TABLE UltraSonTHERM( 
    	id_ultrason INT UNSIGNED NOT NULL AUTO_INCREMENT,
    	date DATETIME NOT NULL,
    	ultrasoundID TINYINT,
    	value SMALLINT UNSIGNED,
    	PRIMARY KEY (id_ultrason)
    )COMMENT ='Capteurs ultra son pour maxity thermique';
    SQL
     
    $dbh->do('DROP TABLE IF EXISTS UltraSonTHERM;') or die "Impossible de supprimer la table UltraSonTHERM\n\n";
    $dbh->do($sql_creation_table_regions) or die "Impossible de créer la table UltraSonTHERM\n\n";
     
    # Lecture des fichiers et insertion des données 
    my $fichier_ultrason      = 'bigfileUltrason_THERM.txt'; 
    #print "$fichier_ultrason \n";
     
    # Fichier UltraSonTHERM 
    print "Insertion des donnees dans la table UltraSonTHERM\n"; 
    open my $fh_ultrason,'<', $fichier_ultrason or die "Impossible de lire le fichier $fichier_ultrason\n"; 
    #open(my $fh_ultrason, "<bigfileUltrason_THERM.txt") or die "Impossible de lire le fichier $fichier_ultrason\n"; 
    my $entete_fichier_region = <$fh_ultrason>; 
     
    # Insertion des données 
    my $requete_sql_region = <<"SQL"; 
      INSERT INTO UltraSonTHERM (date,ultrasoundID,value) VALUES ( ?, ?, ?);
    SQL
     
     
    my $sth_regions = $dbh->prepare($requete_sql_region) or die $dbh->errstr; 
    while ( my $ligne = <$fh_ultrason> ) { 
      chomp $ligne; 
      my ($Date,$UltrasoundID,$Value) = split /\t/, $ligne; 
      $sth_regions->execute($Date,$UltrasoundID,$Value) 
        or die "Echec Requête $requete_sql_region : $DBI::errstr"; 
    } 
    close $fh_ultrason; 
     
    # Déconnexion de la base de données 
    $dbh->disconnect();
    Quand j’exécute le script, j'arrive à me connecter et à créer la table sur la base de données MySQL et j'obtiens à la fin cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Insertion des donnees dans la table UltraSonTHERM
    Uncaught exception from user code:
            Impossible de lire le fichier bigfileUltrason_THERM.txt
    J'ai besoin un peu d'aide pour corriger ce bug.
    Merci

  2. #2
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,
    As-tu pu lire ton fichier ailleurs ?

    Mis à part un problème d'encodage je ne vois pas, et encore c'est pour le fun !

    Le mieux serait que ton fichier soit en utf8
    Fait un essais d'ouverture en précisant le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    open ( IN, '<:encoding(UTF-8)', $fichier_ultrason )
    	or die "Impossible ouvrir fichier $fichier_ultrason en lecture\n";
     
    while ( my $Ligne = <IN> ) {
    ...
    }
     
    close ( IN);
    Le lien que tu donnes sur le tuto de djibril est mort !

  3. #3
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Hello,

    ton fichier texte est-il à l'emplacement de ton script ?
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  4. #4
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Bonjour,
    Merci pour vos réponses. Je remet le lien du tuto.
    Sinon j'ai mis le script perl et le fichier dans le même répertoire et pour exécuter je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl A:\ScriptPerl\perldbi.pl

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Décembre 2012
    Messages : 43
    Points : 91
    Points
    91
    Par défaut
    c'est juste un problème de chemin.
    2 solutions :
    déplace toi dans le répertoire "A:\ScriptPerl\" avant de lancer le script perl

    ou complète le chemin du ficher dans le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    # Lecture des fichiers et insertion des données 
    my $fichier_ultrason      = "A:\\ScriptPerl\\bigfileUltrason_THERM.txt";
    ...
    Saaaaluuut Nounou!!

  6. #6
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Bien vue @Jiheme44. Le problème est résolu

    Grand merci à vous tous !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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