IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Lecture et mise en base de données fichiers volumineux


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2019
    Messages : 1
    Par défaut Lecture et mise en base de données fichiers volumineux
    Bonjour!
    Dans le cadre d'un projet je dois étudier la mise en base de données (SQLServer) de fichiers de type XML.
    Ces fichiers peuvent être de faible taille ( quelques Mo) mais aussi de très grande taille (quelques Go).

    En faisant quelques tests, l'insertion en base (colonne de type string) d'un XML en lecture XMLDocument / InnerXML fonctionne très bien pour les petits fichiers.
    Pour les gros fichiers, j'obtiens systématiquement un OutOfMemoryException à la lecture.
    J'ai tenté plusieurs fonctions XmlDocument, XmlTextReader ou encore en BinaryReader.

    Avez vous des idées sur comment procéder pour arriver à mettre en base de données ces fichiers ? Ou une meilleur approche du sujet ?

    Merci de votre aide!

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Probablement que tu lis tout le fichier XML en mémoire ...

    Tu dois (je pense ...) connaitre la structure de fichier XLS de sorte à le lire ligne par ligne (ReadLine de StreamReader) et à pouvoir déterminer ce qu'il y a lieu de faire avec les données au niveau de la DB, et le faire. De la sorte, il n'y aura jamais qu'une seule (voire deux ou trois) lignes en mémoire à un moment donné : pas de Out of memory !

    J'espère que ceci de te donne une bonne piste ...


  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Plusieurs choses :

    1/ Un SGBD n'a pas pour vocation à stocker des documents : à partir de là, stocker des fichiers XML dans SQL Server ne doit pas être la première idée qui vous vient en tête. Ces fichiers ont-ils la même structure ? Si oui, alors essayez plutôt de stocker les données qu'ils contiennent dans des tables correctement modélisées de manière à pouvoir les interroger aisément.
    2/ Si vous souhaitez stocker de gros fichiers en base de données, il faut utiliser les types nvarchar(max) ou varbinary(max). varchar(max) si vous êtes certains de toujours avoir le même encodage de texte entre la base et les fichiers. Je vous conseille aussi de passer par les mécanismes FILESTREAM ou FILETABLE qui sont ce qu'il y a de plus adapté pour stocker des fichiers en base
    3/ Mais attention : vous parlez de fichiers XML... Avez-vous déjà tenté d'utiliser le type XML de SQL Server ? Il a l'avantage de pouvoir utiliser xpath pour indexer et filtrer les documents

    Enfin, pour lire de gros volumes il faudra toujours passer par un Stream, qui permettra de ne pas tout charger en mémoire d'un coup.

    Que voulez-vous faire avec les fichiers que vous retrouvez à partir de la base de données ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/08/2008, 15h57
  2. Cryptage de base de données fichier
    Par tidou dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 02/05/2006, 12h04
  3. [JDBC]lecture/ecriture dans une base de donnée
    Par tarik75 dans le forum JDBC
    Réponses: 7
    Dernier message: 30/06/2005, 12h42
  4. Base de données fichiers !
    Par xavixxxxx dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 07/04/2005, 12h31
  5. [SQL server][TDbRichEdit] Mise à jours base de donnée
    Par Revan012 dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/06/2004, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo