Ouverture de bases de données "volumineuses"

Bonjour,

J'aimerais travailler sur les données d'un mois de la base Damir (c'est une base de données de la Sécurité Sociale française). Le problème est que la base est très volumineuse 3,5 GO et la RAM de mon PC est de 3,5 GO aussi. Je n'arrive donc pas à l'ouvrir. Mon objectif est d'ouvrir la base pour sélectionner les lignes (quelques centaines de millier) qui m'intéressent et les enregistrer dans un csv pour pouvoir réaliser mon étude.

J'ai essayé d'ouvrir le fichier avec Excel, Access, Python (read_csv avec pandas) et R (read.csv), mais tout a échoué. Auriez-vous une idée à me proposer svp ?

Je vous remercie par avance

Réponses

  • Elle se présente comment cette base de données? Fichier xls? Ou bien fichier texte ordinaire avec les items séparés par des virgules et le passage à la ligne un point virgule (je crois que ce sont les symboles utilisés à cette fin)?
    Dans le dernier cas cela ne doit pas être trop difficile d'écrire un script/petit programme qui permette d'extraire les ligne de la $n$ème à la $m$ème. (m>n).

    PS:
    Je parlais du format de fichier CSV. chaque item est séparé par une virgule et le symbole de retour à la ligne est utilisé pour indiquer un changement de ligne.
  • Bonjour,

    Pour ouvrir rapidement un gros CSV avec R, tu peux utiliser la fonction fread de la librairie data.table ou la fonction read_csv de la librairie readr.
  • Bonjour.

    Je ne programme plus depuis longtemps, mais dans les langages anciens il existait des lectures séquentielles des fichiers, qui permettaient de traiter de gros fichiers dans une mémoire très petite (quelques ko). A l'ouverture du fichier, rien n'était lu.

    Cordialement.
  • Bonjour
    Je vous prie de m'excuser de ma réponse un peu tardive.

    @ Fin de partie :
    Le fichier est un csv avec comme séparateur des points-virgules. Par contre j'ignore le symbole de retour à la ligne

    @ paf et gerard0 :
    Je vais mélanger vos deux idées. Je vais utiliser un découpeur de csv pour créer des sous fichiers avec un nombre de lignes supportable pour mon ordinateur puis je les ouvrirai avec un fread un par un en sauvegardant les éléments utiles dans un autre fichier

    Un grand merci à vous trois pour vos réponses !
  • Bonjour,
    j'arrive assez tard dans la discussion.

    Beaucoup d'outils doivent charger en mémoire l'intégralité du fichier avant de le traiter, ce qui évidemment pose des problèmes sur de très gros fichiers; comme cela a été dit plus haut, certains langages permettent de "parser" le fichier, c'est à dire de le découper pour limiter les ressources, mais aussi afin paralléliser la lecture (et donc d'accélérer le traitement).

    Sur un projet datant de 2 ans, et sur des fichiers Ascii de plusieurs dizaines de Go, j'ai utilisé Python et "readline" dans une boucle qui parcourt tout le fichier; de cette façon seule la ligne est chargée en mémoire puis traitée. Ensuite tout est question de stratégie.

    Je n'ai pas eu l'occasion de tester Pandas, mais il est censé être puissant; j'ai laissé Python de côté depuis ce projet, mais il me faut vraiment que je m'y remette.

    Paul
Connectez-vous ou Inscrivez-vous pour répondre.