Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Lire partiellement un tableau de plusieurs millions de lignes

Résolu !
Accéder à la solution

Bonjour,

 

Alors voici mon problème: j'ai un fichier texte contenant un tableau de 9 colonnes et environ 15 millions de lignes. J'utilise labview pour traiter ces données, ce qui ne pose pas de problème hormis pour un point: lire partiellement le fichier sans avoir à effectuer une lecture complète, qui sature la mémoire du pc.

 

Par exemple, je veux extraire 1000 lignes de ce tableau, à partir de la 10 000 ème ligne.  J'ai essayé avec le sous VI: "lire un fichier tableur" mais celui-ci ne propose qu'un offset de caratère à la lecture et non un offset de lignes, et c'est compliqué de connaître simplement la relation entre le nombre de caractères et le nombre de lignes.

 

Donc est ce que vous auriez une autre solution pour lire paratiellement un tableau ?

 

Merci d'avance pour votre aide

0 Compliments
Message 1 sur 7
4 455 Visites

Bonjour,

 

Peut-être en un utilisant la fonction "définir la position dans le fichier", puis "lire un fichier texte" ?

 

@+

0 Compliments
Message 2 sur 7
4 434 Visites

Bonjour,

 

quel est le caractère de fin de ligne ?

 

@+

0 Compliments
Message 3 sur 7
4 417 Visites

Bonjour,

 

Merci pour vos réponses.

 

Alors le problème avec "obtenir la postion" et "lire un fichier texte" c'est que les offsets sont en octet.

 

Sinon le caractère de fin de ligne est un retour à la ligne. Je suis justement en train d'essayer de faire un sous-VI qui compte les /n /r, en m'inspirant de ce qui est fait dans le VI express:"lire mesures", mais pour l'instant j'ai toujours ce problème de saturation de la mémoire...

 

le VI ci-joint

0 Compliments
Message 4 sur 7
4 414 Visites
Solution
Accepté par l'auteur du sujet GabN

bonjour j'ai le sentiment qu'un fichier binaire conviendrait mieux, afin d'avoir une structure d'octets fixe par ligne et de pouvoir utiliser la capacité à récupérer facilement des données  à n'importe quel endroit du fichier du fait que nous connaissons le nombre d'octets nécessaire à l'écriture d'une donnée. via " Définir la position" qui est en octet. 

 

Toutes les autres méthodes (sur fichier ASCII) seront consommatrices de ressource.

 

Un autre fichier binaire est intéressant : le fichier journal, qui est un tableau de cluster (par exemple pour vous une ligne ou un ensemble fixe de ligne = un élément du journal).

Le grand avantage de cette méthode est qu’il est très simple d’accéder en lecture à la valeur d’un des éléments du tableau (index d'un des clusteur). Il suffit uniquement de spécifier son numéro à la fonction « Définir la position dans le fichier journal LabVIEW ». En effet cette fonction travaille sur des valeurs qui sont en nombre d’enregistrement, et pas en offset d’octets comme les fonctions binaires standards. Il est ainsi plus simple d’exploiter les essais réalisés.

 

Mais je ne sais pas si cela est possible pour vous.

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 5 sur 7
4 409 Visites

Bonjour,

 

J'ai testé l'utilisation des journaux Labview et ça a solutionné mon problème.

 

Merci beaucoup !

0 Compliments
Message 6 sur 7
4 393 Visites

super!!!

Pas souvent utilisé. pourtant le fichier journal est un tableau de cluster dans lequel  « Définir la position dans le fichier journal LabVIEW » permet de récuperer facilement un numéro d'enregistrement. Il n'est pas géré en offset d’octets comme les fonctions binaires standards.

 

fichier journal sera dans le livre....

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 7 sur 7
4 390 Visites