C'est plus un principe de précaution, il est question de gros sous …
J'ai reussi a faire ce que je voulais en passant par des tables de hachage.
J'ai un peu galèrer a tous comprendre mais une fois assimiler c'est super pratique ce machin là ^ .
Le traitement dure environ 1m30.
#Tables de hash des unions et intersections des deux fichiers
%inter = ();
%union = ();
#Ouverture des fichiers, tue le script en cas d'echec
open(FILE,"fichier_1.txt") or die;
open(FILE2,$fichier_comp) or die;
#Chargement des references chaque fichiers dans des tableaux
while(<FILE>){
chomp();
@ligne = split(/;/,$_);
push(@index1,$ligne[7]);
}
while(<FILE2>){
chomp();
@ligne2 = split(/;/,$_);
push(@index2,$ligne2[7]);
}
#Fermeture des fichiers
close(FILE);
close(FILE2);
#On mes tous les elements du premier tableau dans l'union
foreach $a (@index1) {
$union{$a} = 1;
}
#Pour tous les elements du second tableau
foreach $a (@index2) {
#Si il existe dans l'union, c'est qu'il est dans les tableau precedant
#Il est donc placer dans l'inter
if ( exists ($union{$a} ) )
{
$inter{$a} = 1;
}
}
# reconstitution des tableaux à partir
# des tables de hachage
my @inter = keys(%inter);
Merci de ta reponse je vais essayer d'etre plus precis
Ce traitement sera lancer occasionellement. Oui il y a une contrainte de temps, le script ne doit pas dépasser les 20mins. Pour ce qui est des ressources machine il y a pas de contrainte.
Le champs 8 ( qui nous sert de reference entre les deux fichiers ) peut varier énormément.
Les fichiers n'évolue pas, pour resumé le context on a effectuer une fusion entre deux entité et on veux vérifer que ce qui était dans l'entité A ce retrouve bien dans l'entité B.
On a donc extrait le 1er fichiers avant fusion puis le second fichier après fusion. Les deux fichier sont des extrait de base de donnée mais je n'est pas la main sur les extractions je les recois tel quel.
Merci pour vos réponse, mais un petit exemple avec vos solution serais le bien venu, je suis vraiment une bille en perl ( mais j'ai pas le choix du langage … ).
[^] # Re: table de hachage
Posté par Gaston91 . En réponse au message Traitement de gros fichier. Évalué à 1.
Merci beaucoup c'est pile ce qu'il me fallais.
Merci à tous pour votre aide :)
[^] # Re: table de hachage
Posté par Gaston91 . En réponse au message Traitement de gros fichier. Évalué à 1. Dernière modification le 25 mars 2015 à 15:20.
C'est plus un principe de précaution, il est question de gros sous …
J'ai reussi a faire ce que je voulais en passant par des tables de hachage.
J'ai un peu galèrer a tous comprendre mais une fois assimiler c'est super pratique ce machin là ^ .
Le traitement dure environ 1m30.
[^] # Re: table de hachage
Posté par Gaston91 . En réponse au message Traitement de gros fichier. Évalué à 1.
Merci de ta reponse je vais essayer d'etre plus precis
Ce traitement sera lancer occasionellement. Oui il y a une contrainte de temps, le script ne doit pas dépasser les 20mins. Pour ce qui est des ressources machine il y a pas de contrainte.
Le champs 8 ( qui nous sert de reference entre les deux fichiers ) peut varier énormément.
Les fichiers n'évolue pas, pour resumé le context on a effectuer une fusion entre deux entité et on veux vérifer que ce qui était dans l'entité A ce retrouve bien dans l'entité B.
On a donc extrait le 1er fichiers avant fusion puis le second fichier après fusion. Les deux fichier sont des extrait de base de donnée mais je n'est pas la main sur les extractions je les recois tel quel.
ex du fichier 1 ( ~ 7000 lignes ) :
04129441;555;wJsQC0000OpkA;SOLEV003930;CR;11.69;wJsQC0000OpkA;MmDx90005bejL
ex du fichier 2 ( + de 7 millions de lignes ) :
00473316;009;wJsQC00006A50;109FL002698;CR;1.98;wJsQC00006A50;MmDx90004D59C
J'espère que c'est plus claire comme sa.
[^] # Re: Un petit exemple ...
Posté par Gaston91 . En réponse au message Traitement de gros fichier. Évalué à 0.
Ps : j'utilise perl V5.8.8 donc je peux pas utiliser l'operateur ~~ ( smart match ) =/
[^] # Re: Un petit exemple ...
Posté par Gaston91 . En réponse au message Traitement de gros fichier. Évalué à 0.
C'est pas pour un exo mais pour mon boulot ;)
Pour la deadline, bah des que vous pouvez =)
Merci.
# Un petit exemple ...
Posté par Gaston91 . En réponse au message Traitement de gros fichier. Évalué à -2.
Merci pour vos réponse, mais un petit exemple avec vos solution serais le bien venu, je suis vraiment une bille en perl ( mais j'ai pas le choix du langage … ).