Rechercher : dans
Par :

Lire un fichier CSV de 170Mo avec Access

Dernière réponse le 15 jui 2009 à 14:42:50 mmmxtina, le 6 jui 2009 à 10:39:00 
 Signaler ce message aux modérateurs

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!!
Configuration: Windows XP Internet Explorer 6.0

Meilleures réponses pour « Lire un fichier CSV de 170Mo avec Access » dans :
[Python] Lire et écrire des fichiers CSV Voir LIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce...
Fichier CSV Voir Format CSV Un fichier CSV est un fichier tableur, contenant des données sur chaque ligne séparés par un caractère de séparation (généralement une virgule ou un point-virgule). Comment lire un fichier CSV ? Il peut être lu avec un tableur tel que...
Excel - Convertir fichier(s) CSV / XLS VoirComme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification...

1

dubcek, le 6 jui 2009 à 12:11:19

Hello
il y a un utilitaire Unix pour Windows qui permet de couper un fichier par lignes:
$ split --help
Usage: split [OPTION] [INPUT [PREFIX]]
...
-l, --lines=NUMBER put NUMBER lines per output file
et il va créer autant de petits fichiers que nécessaires
rien à installer, il suffit d'extraire bin\split.exe du .zip
http://gnuwin32.sourceforge.net/packages/coreutils.htm

Répondre à dubcek

2

mmmxtina, le 6 jui 2009 à 15:06:33

Merci pour ta réponse!
mais à mon travail on ne peut rien installer c'est trop a galere, ya un délai d'à peu près un mois pour l'autoristaion d'installer un programme, j'aurai finis mon stage d'ici là!!
mais merci pour l'info!

Répondre à mmmxtina

3

dubcek, le 6 jui 2009 à 15:15:52

Si le séparateur du csv est ; tu peux compter les lignes
find /c ";" fichier.csv

Répondre à dubcek

4

mmmxtina, le 9 jui 2009 à 17:46:35

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 :

ligne =ligne +1


ce compteur est dans une boucle.
et c'est sur cette ligne que access se stoppe.

Répondre à mmmxtina

5

dubcek, le 10 jui 2009 à 09:02:26

Déclarer ligne en double ou entier long
c'est du code Access ?

Répondre à dubcek

6

mmmxtina, le 10 jui 2009 à 10:01:37

Bonjour dubcek!

c'est du vba sur access 2003 oui.
j'avais déclarer ligne en integer, c'est peut être ça le soucis.
je vais tester avec Long, je te dis ce que ça donne!!
meric pour l'info.

Répondre à mmmxtina

7

mmmxtina, le 15 jui 2009 à 11:39:51

Bonjour à tous!!!

Je profite de vos nombreuses connaissances pour vous poser d'autres questions sur Access, peut-être que vous pourrez m'aider!

1_ Je souhaiterai créer un bouton qui me propose de sauvegarder ma base de donnée en état ouvert, (c'est-à-dire qu'elle n'enregistrera pas les dernières modifications), et lui indiquée où je veus l'enregistrer et préciser son nom.
Car j'ai vu sur internet qu'il fallait faire DoCmd.Save, mais il me semble que ça enregistre la base de données ouverte au mm endroit et c'est tout.

2_ Comment gérer les erreurs sous access, c'est-à-dire au lieu qu'il y ai la pop up qui propose de débugger, créer une pop up qui dise à l'utilisateur qu'il y a tel soucis.

Merci à tous!
jespere avoir été claire.

Répondre à mmmxtina

8

 ZMEX, le 15 jui 2009 à 14:42:50

Bonjour,

je suis en stage et à peu près dans les même situations :

1- pour enregistrer la base, je pense qu'il suffit de déclarer des variables (chemin et nom)
ce sera à travers un formulaire où il y aura des boutons de controle.

2- c'est à toi d'anticiper les erreurs et de créer des MsgBox avec des messages explicites pour l'utilisateur.

Répondre à ZMEX
Collection CommentÇaMarche.net