2009-09-26 10 views
0

Je me demandais si quelqu'un avait des méthodes/bibliothèques utiles pour traiter un fichier texte délimité par des tabulations? Ce fichier va contenir en moyenne 30 000 à 50 000 lignes. Juste besoin de lire chaque rangée et de le jeter dans une base de données. Cependant, je devrais stocker temporairement toutes les données, la raison étant que si la table contenant les données obtient plus de 1.000 lignes, je devrais créer une nouvelle table et mettre les données dedans. Le code sera exécuté dans un service Windows, donc je ne m'inquiète pas du temps de traitement.Meilleure façon de lire et de traiter un fichier texte

Pensez juste à faire un standard while (sr.ReadLine()) ... des suggestions?

Cheers,

Sean.

+0

Pour mémoire, vous n'avez pas besoin de tout charger en mémoire, si c'est la seule raison. Vous pouvez simplement garder un total cumulé au fur et à mesure du nombre d'enregistrements traités. –

+0

Chaque fois que les données sont téléchargées, on lui attribue un numéro de lot, donc si le dernier lot et la table courante totalisent> 1.000.000, je voudrais créer une nouvelle table et mettre les données là, en gardant les lots ensemble, venir à utiliser les données sur le front-end, je n'aurais à sélectionner à partir d'une table ... – seanxe

+0

depuis l'une des réponses a été supprimée avec mes commentaires: Un simple sr.ReadLine() ne va pas le couper car il peut être des champs qui sont doubles. Quand ils le sont, ils peuvent contenir des caractères spéciaux comme le délimiteur lui-même ou un caractère de nouvelle ligne. Il est donc possible de lire les retours à la ligne, mais attention, la lecture d'une nouvelle ligne ne signifie pas que vous avez toute la ligne. – Toad

Répondre

1

This library est très flexible et rapide. Je ne me lasse jamais de le recommander. Par défaut, ',' en tant que délimiteur, mais vous pouvez le changer en '\ t' facilement.

+0

le délimiteur est donné en paramètre dans cette bibliothèque, donc c'est un non problème – Toad

+1

C'est ce que je voulais dire par "changer facilement" :) –

0

Je soupçonne que « le jeter dans une base de données » prendra au moins 1 ordre de grandeur plus que la lecture d'une ligne dans un tampon, de sorte que vous pouvez pré-scanner les données juste pour compter le nombre de lignes (sans les analyser). Ensuite, prenez les décisions de votre base de données. Puis relisez les données en faisant le vrai travail. Avec de la chance, le système d'exploitation aura mis en cache le fichier afin qu'il se lit encore plus rapidement.

Questions connexes