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 :

Afficher tous les pères référencés par une table


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut Afficher tous les pères référencés par une table
    Bonjour à tous,
    Je travaille sur un projet de migration de version destiné pour l'ERP COMPIERE (Système d'information), mon objectif est de assurer la migration des données entre deux bases de données oracle 10g XE, en premier lieu je voudrais afficher la liste des tables référencés par une table donnée, (C'est pour que je puisse commencer la migration des pères d'abord, puis les fils à cause des contraintes des clés étrangères), j'ai développer une méthode récursive en java/jdbc pour faire cela, en utilisant la méthode getImportedKeys, elle marche parfaitement pour des cas simple, mais Eclipse m'affiche un out of memory pour une table un peut complexe, ma question c'est est ce que il ya une meilleur piste pour arriver à mon objectif, ou un moyen pour un gestion dynamique de la mémoire pour ne pas tomber dans l "out of memory", voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public void tester(String tname)
    	{   
    		ResultSet rs1 = null;
    		try
    		{
    		rs1 = md.getImportedKeys(null, "COMPIERE", tname);
    		while (rs1.next())
    		{
    			tester(rs1.getObject(3).toString());
     
    		}
     
    			tab.add(tname);
    			rs1.close();
    		}
     
    		catch(SQLException e)
    		{
    			System.out.println("erreur base de donnée"+e);
    		}
     
    		}
    et l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Connection réussie
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    Merci d'avance pour toute aide.
    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    oracle fourni déjà des outils bien performant pour copier un tablespace vers un autre (outils imp et exp), sinon y a aussi tora qui est capable de traiter les import / export avec gestion des contraintes.

    Enfin, au final, si tu dois faire de la migration de donnée entre deux bases différentes avec des structures différentes, les scripts sql seront vraissemblablement beaucoup plus rapides et appropriés que du code java. En oracle, tu peux toujours créer des tables temporaires tres performantes pour faire ta migration.

    Enfin pour les tables qui se référencent elle meme (pere-fils), l'abandon temporaire des contraintes via le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set contraint myConstraint deferred
    peut s'avérer utile

  3. #3
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Totalement d'accord avec tchize_ ... tu devrais pouvoir te passer de Java sans problème.

    sinon, à titre d'information, par défaut la mémoire allouée à la JVM est 64 Mo. tu peux l'augmenter en jouant avec les paramètres Xmx et Xms de l'exécutable java ...

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    si tu veux charger toute ta db dans java avant de l'envoyer vers la deuxième db, tu va souffrir pour les grosses db gaffe à la taille maximale de la mémoire de la jvm. Sous windows 32 bits, si ma mémoire est bonne, elle est limitée à moisn de 2G, sous linux 32, c'est un peu plus, si t'as besoin de plus de 4G, faudra une grosse machine avec un os 64 bits et une jvm ad-hoc

Discussions similaires

  1. Réponses: 10
    Dernier message: 17/04/2009, 17h19
  2. Réponses: 1
    Dernier message: 21/05/2008, 08h38
  3. [MySQL] afficher tous les enregistrements sélectionnés par checkbox
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/03/2007, 12h28
  4. Tous les champs SAUF dans une table.
    Par Yepazix dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/08/2005, 16h01
  5. Sélectionner tous les id renvoyés par une 1ère requête
    Par Prof Vince dans le forum Requêtes
    Réponses: 5
    Dernier message: 29/11/2003, 19h46

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