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 :

récupérations infos fichier plat vers BDD


Sujet :

SGBD Perl

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 69
    Points
    69
    Par défaut récupérations infos fichier plat vers BDD
    j'ai un fichier plat dans lequel j'ai 3 infos séparées par un ";"

    toto;essai1;23h50
    tata;essai2;23h55
    ...


    je voudrais

    1. ouvrir mon fichier plat convention.txt
    2. récupérer les infos
    3. les envoyer vers une BDD

    comment séparer les 3 valeurs en supprimant le ";" et en convertissant les chaines en variable $nom $numessai $heureessai

    merci

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    comment séparer les 3 valeurs en supprimant le ";" et en convertissant les chaines en variable $nom $numessai $heureessai
    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
     
     
    # récupération info fichier
    open (FILE, chemin/fichier.txt) or die "impossible d'ouvrir le fichier";
    my @lines = <FILE>;
    close (FILE);
     
     
    # connexion DB
    my $db = 'DBI:oracle:basededonnées:adresseip';
    my $user = '';
    my $pass = '';
    my $dbh = DBI->connect($db, $user, $pass) 
      or die "connexion impossible";
     
    # traitement et inserstion ligne par ligne du fichier
    foreach (@lines){
       my ($nom, $numessai, $heureessai) = split (/;/, $_);
     
       my $req = $dbh->prepare("INSERT nom_table VALUES('$nom', '$numessai', '$heureessa'i)");
       $req->execute()or die "requete impossible";
    }
     
    $dbh->disconnect();
    -- Jasmine --

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 69
    Points
    69
    Par défaut Jasmine tu es terrible :)
    voici ce qui ressemble à la fin de mon code (insertion des valeurs dans un fichier plat puis récupération de ces infos dans le fichier plat pour intégration BDD

    je pense qu'il y a des imperfections évidentes dans la partie insertion des infos dans un fichier plat
    pour revenir à mon pb initial
    23 "dossier"utilisateurs
    2 sous répertoires par utilisateur
    1 fichier dans un sous répertoire
    2 fichiers dans l'autre
    je veux alimenter mon fichier plat et faire en sorte qu'il se ferme une fois que les informations des 3*23 fichiers (69, j'adore ce chiffre ) ont été récupérées


    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
     
    #******************************************************
    #Insertion des informations contenues dans les
    #variables vers le fichier indicateur_convention.txt
    #******************************************************
    my $fichier = "$Date|$Caisse|$NomFichier|$DateFichier|$HeureFichier\n";
    my $titre = "Date|Caisse|Nom fichier|Datefichier|Heurefichier|\n";
    my $chemin = "./indicateur_convention.txt";
     
    open (FH, ">>$chemin") || die $!;
     
    print FH $titre\n;
    while ($fichier ne "")
    {
    print FH $fichier\n;
    }
    close (FH)
     
     
    #******************************************************
    #Insertion des informations contenues dans les
    #variables vers la table Infocentre
    #******************************************************
     
    # récupération info fichier
    open (FILE, ./indicateur_convention.txt) or die "impossible d'ouvrir le fichier";
    my @lines = <FILE>;
    close (FILE);
     
    #Connexion BDD
    my $db = 'DBI:oracle:BDD:adresseip';
    my $user = '***';
    my $pass = '***';
    my $dbh = DBI->connect($db, $user, $pass) 
      or die "connexion impossible";
     
    # traitement et inserstion ligne par ligne du fichier
    foreach (@lines){
       my ($Date, $Caisse, $NomFichier, $DateFichier, $HeureFichier) = split (/|/, $_);
     
       my $req = $dbh->prepare("INSERT INTO INF_F_PUB_INTRANET VALUES('$Date', '$Caisse', '$NomFichier', '$DateFichier', '$HeureFichier')");
       $req->execute()or die "requete impossible";
    }
     
    $dbh->disconnect();

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Ton \n doit être entouré de doubles quotes afin d'être interpreté.
    doit être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print FH "$titre\n";
    # ou
    print FH $titre."\n";

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    print FH $titre\n;
    while ($fichier ne "")
    {
    print FH $fichier\n;
    }
    close (FH)
    Que cherches-tu à imprimer? Une variable par ligne ou le tout sur une seule ligne?
    Cela est une boucle infinie car $fichier ne sera jamais vide et tu vas donc écrire à l'infini la même ligne de valeurs séparées par des pipes.



    Fais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    my @fichier = qw($Date $Caisse $NomFichier $DateFichier $HeureFichier);
    my $titre = "Date|Caisse|Nom fichier|Datefichier|Heurefichier|\n";
    my $chemin = "./indicateur_convention.txt";
     
    foreach (@fichier){
        print FH $_."\n";
    }

    ou encore plus simplement sur une seule ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $fichier = "$Date|$Caisse|$NomFichier|$DateFichier|$HeureFichier";
    my $titre = "Date|Caisse|Nom fichier|Datefichier|Heurefichier";
    my $chemin = "./indicateur_convention.txt";
     
     print FH $titre."\n".$fichier."\n";
    -- Jasmine --

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

Discussions similaires

  1. [XML] fichier plat vers xml
    Par jasminrose dans le forum APIs
    Réponses: 22
    Dernier message: 16/04/2007, 17h37
  2. Données fichier texte vers BDD
    Par dr_octopus74 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/02/2007, 15h54
  3. extraire donner fichier texte vers BDD
    Par dr_octopus74 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 29/12/2006, 19h07
  4. Conversion fichier plat vers CSV
    Par linar009 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/11/2006, 13h35
  5. Importation fichier plat vers Mysql
    Par xender dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/05/2006, 22h36

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