Accueil > Forum > > > > Lire dans un fichier CSV de 170Mo avec Access
Lire dans un fichier CSV de 170Mo avec Access
lundi 6 juillet 2009 à 10:30:19 |
Lire dans un fichier CSV de 170Mo avec Access

mmmxtina
|
Bonjour à tous!! J'ai un petit soucis, j'ai besoin de récupérer des données de plusieurs fichier CSV dans ma base de données access. Le truc c'est que ces fichiers sont très lours, don 1 qui fais exctement 173Mo (je sais mm pas il comporte de ligne, mais en tout cas Excel ne peut pas l'ouvrir!) Donc le problème c'est que quand je lance mon appli pour lire le fichier elle plante! (enfin jje la lance le matin à 10h, à 17h ça n'a toujours pas finis de tourner, donc je suppose qu'elle à planter, non?? Donc je me demandais si c'étais possible de découper le fichiercsv, ou de lme lire en partie et de reprendre la lecture une heure plustard, enfin de faire en sorte que ça ne plante pas! voici mon code (mon code fonctionne sur des fichier de 5Mo, mais je pense qu'il est pas assez performant pour 175Mo) :
Set myFSO = CreateObject("Scripting.FileSystemObject") RecupNomFich TabTypeFichiers(2), TabTypeInterv(5) Set csvFile = myFSO.OpenTextFile(cheminCSV & fichierCSV) 'c'est des variables globales 'tant qu'on est pas à la fin du fichier CSV (boucle sur chaque ligne) While Not csvFile.AtEndOfStream 'lire la ligne suivante csvLine = csvFile.ReadLine '"spliter" la ligne tabStr = Split(csvLine, csvDelimiter) 'actions sur le fichier Wend csvFile.Close Set csvFile = Nothing: Set myFSO = Nothing
Merci beaucoup à tous!! 
|
|
lundi 6 juillet 2009 à 10:43:53 |
Re : Lire dans un fichier CSV de 170Mo avec Access

jack
|
Salut La structure de lecture semble bonne. Règle 1 : Toujours ajouter un DoEvents dans les boucles, sinon, tu ne pourras pas reprendre la main ni le stopper Règle 2 : FSO est pratique, mais lent. VBA a sa propre commande Open, Line Input, Close
Règle 3 : Faire les essais sur un fichier de taille raisonnable + utiliser le debuggueur dans le code pour suivre l'évolution du programme : F9 : désigne la ligne sur laquelle tu veux te figer F8 : Exécute la prochaine ligne de code (une seule ligne) F5 : Exécute le reste du programme normalement Quand tu es arrêté sur une ligne dans le code, survole tes variables avec la souris pour qu'il t'affiche leur contenu Ca te permettra de vérifier l'avancement de ton code et de découvrir où ça coince Eventuellement, ajoute un Debug.Print csvLineaprès ton ReadLine pour suivre l'avancement dans la fenêtre de débug (Ctrl-G) Vala Jack, MVP VBNB : Je ne répondrai pas aux messages privés Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
|
|
lundi 6 juillet 2009 à 11:28:11 |
Re : Lire dans un fichier CSV de 170Mo avec Access

Renfield
|
gaffe, Jack, Line Input à éviter pour de gros fichiers.
VB va chercher les fins de ligne et générer un bon paquet d'accès disque.
faut lire le ficheir par bloc de quelques Ko
et jouer ainsi avec un Buffer roulant...
|
|
lundi 6 juillet 2009 à 11:55:47 |
Re : Lire dans un fichier CSV de 170Mo avec Access

mmmxtina
|
Merci pour vos réponses! bah là j'ai essayé avec un fichier de 5Mo pour l'instant ça à l'air de fonctionner, j'ai arreter le debbuger car je voulais pas attendre une heure sans rien faire! J'ai oublier de mette Debug.Print csvLine dailleurs, je vais retester avec ça. A ton avis Reinfield comment je peu faire avec ce gros fichier? je pensait à le découper en morceau, mais ça doit être galère, ou bien lire par paquet de 5000lignes, qu'en pense tu? merci.
En passant, j'ai un autre petit soucis, est-ceque vous l'avez déjà eu:
J'insère dans ma base de données, les onformations des fichiers csv, et dans ces infos il ya des dates que j'insère comme ceci dans mes tables
insert into ... '#' & laDate & '#' ... ça fonctionne très bien, mais pour certaine date, je ne sais pas pourquoi access, inverse la date du jour et la date du mois, donc le 01/04/2008 devient le 04/01/2008, et donc ça fausse mes requêtes du coup. c'est vraiment bizarre, dans le fichier csv ya bien 01/04/2008 et dans acces je retrouve 04/01/2008, et pas pour tous els intervenants, seulement qqun.
une idée? merci!
|
|
lundi 6 juillet 2009 à 12:01:32 |
Re : Lire dans un fichier CSV de 170Mo avec Access

Renfield
|
formate les dates ainsi :
yyyy-mm-dd
|
|
lundi 6 juillet 2009 à 12:26:36 |
Re : Lire dans un fichier CSV de 170Mo avec Access
|
lundi 6 juillet 2009 à 13:11:48 |
Re : Lire dans un fichier CSV de 170Mo avec Access

jack
|
maChaine = "insert into ... #" & laDate & "# ..." Le symbole # n'est pas un caractère qu'on rajoute à la chaine, mais un vrai délimiteur SQL. Il ne faut donc pas l'encadrer par des ' qui délimite les chaines sous SQL. De plus, si laDate est une variable dont le contenu est dans VB, il faut ressortir de la chaine (avec les " de VB)
|
|
lundi 6 juillet 2009 à 14:31:23 |
Re : Lire dans un fichier CSV de 170Mo avec Access

mmmxtina
|
oui tu as raison jack, dans mon apli je l'ai écris avec ", c'etait pour donner l'exemple, j'ai aps fais gafe j'ai écris '#', au lieu de "#". et ça fonctionne très bien!! 
|
|
jeudi 9 juillet 2009 à 17:44:32 |
Re : Lire dans un fichier CSV de 170Mo avec Access

mmmxtina
|
bonjour à tous!!! bon suite à mon problème de temps avec mon fameux fichier csv de 170mo, j'ai eu (la bonne) idée d'exporter directement mon fichier dans une autre base de données access, il semblerai que les accès à une autre base de données access soit plus rapide que els accès à un fichier csv (je me trompe,) en plus ce qui est pratique, c'est que je peux chercher plus précisément ce que je veux, pour insérer les informations dans ma 1e base. donc petit soucis, la table de ma 2e page (celle qui contient le fichier de 170mo) fais 1 800 000 lignes comme le fichier, et en fait pour récupérer els infos de cette base dans ma base 1, je fais une requete où je demande de sélectionné certaine colonne de cette selon certain critère, et afin de récupérer els données ligne par ligne, j'ai mis un compteur (c'est un integer) appellé ligne. Le soucis c'est que a environ 35000 lignes (le compteur = 35000) le compteur déclenche une erreur de type 6 "Dépassement de capacité"! Comment y remédier, une idée? merci beaucoup!!! j'utilise mon compteur comme ceci : ce compteur est dans une boucle. et c'est sur cette ligne que access se stoppe.
|
|
vendredi 10 juillet 2009 à 13:52:46 |
Re : Lire dans un fichier CSV de 170Mo avec Access

mmmxtina
|
Réponse acceptée !
en fait fallai déclarer Dim ligne As Long, et pas Dim Ligne As Integer, pour ce que ça interresse!
|
|
Cette discussion est classée dans : fichier, ligne, lire, csv, csvfile
Répondre à ce message
Sujets en rapport avec ce message
lecture fichier csv (vb.net) [ par lmb19 ]
Bonjour,Je desire lire les données d'un fichier au format csvPaul;bleu;33;280Jean;rouge;24;170etc..j'utilise actuellement le code ci-dessous :Private
VB6 Lire un Fichier avec condition [ par JeffC1977 ]
Salut à tous... Je lis un fichier ligne par ligne avec VB6... Si je rencontre tel condition, je met de l'information dans un tableau.frmCogo.txtFich
lire un fichier texte ligne par ligne en vb.net [ par guiguidu25 ]
Bonjour tout le monde je voudrais savoir comment lire un fichier texte ligne par ligne en vb.net je savais le faire pendant un moment mais j'ai oublié
Lire un ligne spécifique d'un fichier .ini [ par Vinsaille ]
Bonjour à tous.Voilà j'ai besoin d'un peu d'aide, ca se trouve mon problème vous paraitra simple, mais pour moi, débutant, je n'arrive pas à trouver.P
Lire des données d'un fichier Texte avec VB2005 [ par LUSTRUCRU ]
Bonjour à toutes et tous,Débutant extreme ou extreme débutant ( comme vous le souhaitez) je cherche de l'aide pour pouvoir lire un fichier .Txt en col
ecrire a une ligne specifique [ par aigledefer1331 ]
bonjou je suis debutant en vb2005 j'ai trouver le moyen de lire dans un fichier texte et de lire a un ligne desirer je voudrais savoir comment faire p
Lecture d'une ligne de texte [ par DarkMickael ]
Bonjours, je shouaiterai lire un fichier texte mais uniquement une ligne de ce texte Explication : fichier aaa.text | contenant => aaaaa
Lire dans un fichier .CSV [ par drik56 ]
Salut a tous,Je cherche si il est possible de lire directement en vba dans un fichier excel ou csv sans faire d'importation.Existe t il un code pour c
lire et extraire une ligne d' un fichier texte (vbs) [ par liocifer ]
Salut,Je viens de débuter en vbs et j' ai un souci pour lire ligne à ligne un fichier texte, puis une fois trouver la ligne correspondant à la valeur
Fichier Csv à enregistrer sous format xls [ par Sator1 ]
Bonjour, à tous! je cherche à enregistrer un fichier csv sous fichier exel, malgrès mes recherches je n'ai réussi qu'à avoir ligne par ligne, mais tou
Livres en rapport
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|