Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
761 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Fusionner des fichiers texte et les envoyer dans une base SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fusionner des fichiers texte et les envoyer dans une base SQL

n°1368152
Gilgamesh ​d'Uruk
Lui-même
Posté le 16-05-2006 à 19:19:04  profilanswer
 

Bonjour,
 
bon, y'a une 2 heure, je ne connaissais pas Perl, donc un pt'tit peu d'indulgence...  :)  
 
j'ai environ 7000 fichiers de type texte dans un repertoire PANEL\ESS où se trouve egalement mon maggggnifique fichier de commande appelé fusion.pl. Enfin, quand il sera écrit....
 
Les nom de fichier sont du type : debit-date.pnn
 
Je voudrais :
1/ inscrire sur chaque ligne de chaque fichier le debit (extrait du nom du fichier)
2/ virer la premier ligne
3/ fusionner les 7000 fichiers ainsi modifiés (qq millions de lignes !)
4/ balancer le résultat dans un fichier fictemp sous SQL
 
bon, je commence comme ça :
 

#!\PANEL\ESS\
      }  
use strict;
my $file;
my $deb;
my $date;
my @res;
my @liste = glob('/PANEL/ESS/*.pnn');
foreach $file (@liste)
($deb,$date) = split(/-/,$_)
open(myfile,$file) or die "$file: $!" ;
while(<myfile> ){
push "$deb;$_;
      }


 
après le push je sais pas trop...
 
qqun pour m'aiguiller ?
 
merci
 
a+


Message édité par Gilgamesh d'Uruk le 16-05-2006 à 19:20:35
mood
Publicité
Posté le 16-05-2006 à 19:19:04  profilanswer
 

n°1368286
couak
Posté le 16-05-2006 à 22:47:11  profilanswer
 

t'es obligé de le faire en perl ?
en shell je trouve ça plus rapide à faire :

Code :
  1. for i in `ls *pnn`
  2. do
  3.   $FICHIER=$i
  4.   $DEBIT=`echo $FICHIER | awk -F\\- '{ print $1 }'`
  5.   echo $DEBIT
  6.   tail +2 $FICHIER
  7. done >> fictemp


 
Bon c'est faisable en Perl mais je ne pense pas que ce sera plus simple


Message édité par couak le 16-05-2006 à 23:01:38
n°1368287
couak
Posté le 16-05-2006 à 22:51:01  profilanswer
 

ah merde j'avais compris le débit uniquement sur la 1ère ligne du fichier :o

n°1368290
couak
Posté le 16-05-2006 à 22:59:18  profilanswer
 

Code :
  1. for i in `ls *pnn`
  2. do
  3.   $FICHIER=$i
  4.   $DEBIT=`echo $FICHIER | awk -F\\- '{ print $1 }'`
  5.   tail +2 $FICHIER | while read LINE
  6.   do
  7.      echo "$DEBIT $LINE"
  8.   done
  9. done >> fictemp


Message édité par couak le 16-05-2006 à 23:01:31
n°1368656
Gilgamesh ​d'Uruk
Lui-même
Posté le 17-05-2006 à 12:35:17  profilanswer
 

Code :
  1. for i in `ls *pnn`
  2. do
  3.   $FICHIER=$i
  4.   $DEBIT=`echo $FICHIER | awk -F\\- '{ print $1 }'`
  5.   tail +2 $FICHIER | while read LINE
  6.   do
  7.      echo "$DEBIT $LINE"
  8.   done
  9. done >> fictemp


 
figure toi que j'ai essayé en shell DOS et que c'était interminable : >5 h pour 7000 fichier. Quand le fictemp dépasse que dizaine de Mo, ça devient dur :(  
 
en Perl on m'a promis que ça passerais à qq dizaine de minute. J'en salive d'avance.
 
mais bon, j'essaierais le tiens quand même :) C'est quoi comme langage ?
 
merci
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Fusionner des fichiers texte et les envoyer dans une base SQL

 

Sujets relatifs
Requetes Sql Simples ![SQL] Requête pour récupérer le classement d'un championnat [Résolu]
Générateur online d'effet de texte en flash?[DB2] créer + restaurer une base
Envoyer un POST par un lienprobleme sur une requete SQL
Utiliser l'attribut SQL SELECT[SQL] Une requete de division
[MCD] besoin aide pour creer base[RESOLU][SQL SERVER] Problème de curseur
Plus de sujets relatifs à : Fusionner des fichiers texte et les envoyer dans une base SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR