2008-10-07 7 views

Répondre

0

Si vous utilisez xml, il suffit de lire quelques nœuds à au moment. Si vous utilisez un autre format, lisez juste quelques lignes (ou peu importe) à la fois. Ne chargez pas le tout en mémoire avant de commencer à travailler dessus.

2

Vous ne devriez toujours pas tout lire en même temps. Lire en morceaux, puis écrire le morceau dans le fichier mdb, puis lire un autre morceau et l'ajouter au fichier. Lire 50 000 enregistrements à la fois ne fait que créer des problèmes.

1

De toute évidence, vous ne pouvez pas lire toutes les données dans la mémoire avant de créer le fichier MDB, sinon vous n'obtiendrez pas d'exception de mémoire insuffisante. :-)

Vous avez deux options: - partitionnement - lire les données en petits morceaux en utilisant le filtrage - virtualiser - diviser les données en pages et charger la page en cours

Dans tous les cas, vous devez créer le fichier MDB et transférer les données après cela en morceaux.

4

Je pourrais recommander de créer le fichier MDB et d'utiliser un DataReader pour diffuser les enregistrements dans la MDB plutôt que d'essayer de lire et de mettre en cache l'intégralité de l'ensemble des données localement. Avec un DataReader, le processus est plus manuel, mais vous n'obtenez qu'un seul enregistrement à la fois, donc vous ne remplissez pas votre mémoire.

0

Je suggère d'utiliser un generator:

» ... au lieu de construire un tableau contenant toutes les valeurs et les retourner à la fois, un générateur donne les valeurs une à la fois, ce qui nécessite moins mémoire et permet à l'appelant de commencer à traiter les premières valeurs immédiatement.En bref, un générateur ressemble à une fonction mais se comporte comme un itérateur. "

L'article wikipedia a aussi quelques good examples

Questions connexes