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

JDBC Java Discussion :

Taille du ResultSet


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 58
    Points
    58
    Par défaut Taille du ResultSet
    Bonjour,

    Dans le cadre d'un TP, on doit réaliser un convertisseur de DB.

    J'ai juste une interrogation: comment faire (proprement) pour lire les données de l'ensemble d'une table (en fait de toutes les tables d'une DB) et les injecter dans la nouvelle BD?

    J'ai à l'esprit d'utiliser un ResultSet avec un statement 'Select * from maTable' et ensuite un while (rs.next()) et un autre statement 'Insert into....'.

    Dans le principe je suis d'accord mais quid si ma BD contient 10 000 000 de lignes avec 200 champs.

    Bref, ma question est : est-ce qu'un ResultSet contient TOUTES les données de la table ou est-ce qu'il 'voyage' au fur et à mesure qu'on avance dans le ResultSet?

    J'ai cherché mais à part un post qui traitait vaguement d'un getFetchSize, je n'ai pas plus d'information là dessus. Et encore, pas tout compris.

    Donc, quid d'un ResultSet?

    Merci

  2. #2
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Bonjour
    Je ne suis pas un grand spécialiste de JDBC, mais ce que j'ai compris de la documentation de l'API 1.6 sur les objets Statement et Resultset, c'est que la requête est clairement exécutée et la réponse complète est renvoyée par la BD dans le ResultSet.
    Don, bien que je trouve cela invraisemblable, si vous avez une table de 10 000 000 de lignes avec 200 colonnes, vous récupérerez l'intégralité dans le ResultSet. Du moins, c'est le point de vue Java.
    Je penses que pour le concret, il faut plutôt se pencher sur le Driver jdbc employé. En effet, la réalisation des opérations est faite par ce dernier, et on peut imaginez que les données ne soit récupérée qu'au coup par coup pour des raisons de performances, mais là, je n'en sais pas assez.
    Qu'utilisez-vous comme Driver ?
    Quels sont les types des bases de données source et cible ?
    MySQL, Access, Oracle ???
    Cependant, sans chercher plus loin, je suppose qu'en réalisant des requêtes exploitant la clause LIMIT du SQL pourraient permettre de contrôler en quelque sorte le débit.
    Quand à la duplication, copier une base vers une autre, il faut bien à un moment que l'ensemble des données soit déplaçées ?!....

  3. #3
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Des précisions
    Voilà, pendant que je vous répondais, j'ai consulté plus sérieusement la documentation.
    En fait, avec la commande getFetchSize() de la classe ResultSet, vous récupérez la taille d'un bloc.
    En fait, le driver récupère les données résultante de la requête bloc par bloc, et non pas intégralement. La taille du bloc peut donc être connue grâce à cette méthode getFetchSize().
    Donc, le Resultset ne contiendra jamais toutes les données de la réponse (du moins s'il s'agit d'une requête renvoyant un grand nombre de lignes), mais un découpage en bloc de taille X. Le déplacement dans le Resulset via la commande next() déclenchera le chargement en mémoire du prochain bloc lorsque le premier aura été entièrement parcouru.


    Note :
    Si vous voulez des précisions, vous pouvez toujours consulter le lien suivant.
    http://java.developpez.com/faq/jdbc/...esultset#fetch

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 58
    Points
    58
    Par défaut
    Merci pour la réponse.

    C'est clair, net et précis.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/06/2011, 13h44
  2. taille d'un resultset
    Par legillou dans le forum JDBC
    Réponses: 2
    Dernier message: 07/01/2006, 23h14
  3. Connaitre la taille de la RAM
    Par dway dans le forum Assembleur
    Réponses: 23
    Dernier message: 15/09/2004, 10h05
  4. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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