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

DB2 Discussion :

[DB2]Structure de table


Sujet :

DB2

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [DB2]Structure de table
    Hello World !

    Je suis en stage de fin d'études et on me demande de faire un programme qui permet entre autres de copier des tables d'une base de données à une autre. Pour le moment, ces bases sont hébergées sous DB2 mais à terme il faudra qu'on puisse copier d'un SGBD quelconque à un autre.
    Je voudrais donc récupérer la structure des tables sur un serveur, contruire une nouvelle table sur un autre serveur et copier les données ensuite.
    J'ai pensé utiliser les vues systèmes qui me permettent de connaître les définitions des colonnes mais c'est un beau b.... pour retrouver toutes les contraintes d'intégrité, d'unicité, de génération, etc.
    Y aurait-il un moyen de copier une table d'une base vers une autre, sur un serveur différent un peu à la manière de la requête CREATE SUMMARY TABLE tablename1 LIKE tablename2...
    Bon j'en demande beaucoup mais construire une requête CREATE TABLE dynamiquement, c'est quand même pas de la tarte ...

    A l'aide svp, mon diplôme est (presque) en jeu !!!

    Merci.

  2. #2
    Membre du Club
    Inscrit en
    Février 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 39
    Points : 46
    Points
    46
    Par défaut
    Perso, je pense que tu vas etre obliger d'ecrire un script PL/SQL (ou autre) qui te générera à partir de ta base un script permettant de la recreer....


    En quoi comptes tu developper?

    PL/SQL, perl???

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Le hic, c'est que je dois développer avec un L4G (Visual Adelia) avec lequel je peux passer des ordres SQL génériques (mais ils sont limités) ou exécuter des commandes SQL de mon choix mais spécifiques à un SGBD en particulier. Et une spécif de mon appli est la portabilité aussi bien au niveau plateforme que SGBD ....

    Je pense qu'effectivement je ne vais pas avoir le choix : il va falloir que je construise un script permettant de générer les tables à partir des infos des vues système du SGBD source ... => 1 script pour chaque SGBD

    va falloir que je réévalue les charges

  4. #4
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    faut savoir que chaque SGBDR construit des tables systèmes dans chaque base de données, ces tables sont cachées par défaut mais je crois que tu trouvera ston bonheur là dedans, c'est clair ensuite faudre se taper des script pour contruire un CREATE TABLE NORMALISE ANSI. Donc renseigne toi sur DB2, tu doi avoir un programmer guide quelque part.
    Bon courage

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oui il y a de la doc : rien que pour le CREATE TABLE : 44 pages de doc avec des schémas de syntaxe illisibles !!

    Merci

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Bonjour

    Voilà mon petit avis sur la question :
    1) Faites une étude théorique générale du sujet qui va vous permettre d'identifier les problématiques majeures et de circonscrire votre projet. Par exemple, vous pourrez préciser d'emblée qu'une méthode généraliste procédant par sélection des données d'un côté et insertion de l'autre aura des performances faibles, ce qui limite une telle application à de petites tables. (sinon, il vaut mieux recourir aux outils natifs d'extraction et de chargement en masse des SGBD source et cible).
    Vous déciderez peut-être de ne pas prendre en compte les données stockées sous forme d'objets (Oracle par exemple).
    Vous ferez un état des lieux de la diversité des types de données entre les différents SGBD et vous les mettrez en correspondance avec les types de la norme SQL (2 ou 3). De même vous soulignerez la diversité des modes de spécification des contraintes référentielles, des contraintes sur les valeurs, etc, entre les différents SGBD, et vous indiquerez que dans certains cas (par exemple passage de SQL Server à MySql), on aura une perte des contraintes référentielles.

    2) Sélectionnez les SGBD que vous voulez traiter, et bon courage !

    3) La consultation des tables système est impérative pour accéder à la structure des données, aux contraintes, etc. C'est peut-être le bordel, comme vous dites, mais c'est comme ça que ça marche.

    4) ODBC fournit des primitives d'accès au dictionnaire de données des différents SGBD. Ceci signifie qu'avec la même fonction, vous pourrez connaître la liste des tables dans le SGBD voulu. J'ignore en revanche si ces primitives sont suffisamment raffinées pour répondre à tous vos besoins (à vrai dire je crains que non). Je suppose aussi, mais je ne l'affirme pas, que d'autres middlewares genre JDBC, OLEDB au outres fournissent des services identiques.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos lumières. Même si je craignais vivement de recevoir une réponse de ce type, il semble en effet que je n'ai pas d'autre choix.

  8. #8
    Membre éprouvé
    Avatar de Gandalf24
    Homme Profil pro
    Integrateur Odoo
    Inscrit en
    Mai 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Integrateur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 481
    Points : 1 013
    Points
    1 013
    Par défaut
    Ugh,
    va voir sur ce site, tu y trouvera surement qq infos interessantes :
    http://client-serveur.ifrance.com
    Le nom d'un bomerang qui ne revient pas quand on le lance ?
    Un Baton...

  9. #9
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup Gandalf24 ))
    Des infos super utiles !!!

  10. #10
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Points : 655
    Points
    655
    Par défaut
    je remonte un vieux topic (pfiou ça sent la poussière )

    es-tu arrivé à lire les structures des tables sur DB2 ?

    Je dois faire des requêtes (dans du java/jsp) qui récupèrent la structure de quelques tables sur DB2, qui les balances dans mysql (ça je maîtrise à peu près).

    Le site indiqué un peu plus haut est très intéressant pour comparer, mais je n'y ai pas trouvé comment connaître la structure des tables.

    Actuellement j'arrive à connaître la liste des librairies, et la liste des tables dans une librairie.

    Librairies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TABLE_SCHEMA, COUNT(*) AS "COUNT" FROM QSYS2.SYSTABLES GROUP BY TABLE_SCHEMA ORDER BY "COUNT" DESC
    Tables d'une librairie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM QSYS2.SYSTABLES WHERE table_schema = 'MA_LIBRAIRIE';


    merci d'avance
    Membre éclairé, lol !

  11. #11
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oui, j'ai fini par y arriver. Mais waou!! Ca fait un bail !!
    Par contre mon prototype ne gère pour le moment que les tables sous DB2 Windows, j'ai dû restreindre le sujet. Mais les différences de schémas (les bibs sous AS/400) ne doivent pas être énormes avec DB2 400.
    Il te faut écrire un script qui construit une requête SQL qui recrée tes tables dans MySQL à partir des données obtenues sous DB2.
    Pour cela tu as besoin bien sûr du nom de tes tables, des champs, de leur type, des contraintes associées et tu récupérer tout ça dans les tables de la bib QSYS2.
    Mais comme le disait si justement Pomalaix, le passage de DB2 à MySQL peut être dangereux pour la cohérence des données entre les deux bases (ref gestion des contraintes d'intégrité référentielle ....). Tes traitements se feront sur tes 2 bases où alors l'une des deux est la réplication de l'autre ???

    Voilà, c'est un peu loin tout ça ... Si t'as de questions, n'hésite pas, je ferais de mon mieux ))

  12. #12
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Points : 655
    Points
    655
    Par défaut
    g trouvé la table où je dois piocher.

    en fait sur mysql c quasiment que de la consultation, juste une table mise à jour et renvoyé sur DB2 à la synchro
    Membre éclairé, lol !

  13. #13
    Membre éclairé
    Avatar de iubito
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 389
    Points : 655
    Points
    655
    Par défaut
    c'est la table QSYS/QADBIFLD mais pour des raisons de sécurité y'a pas trop de droits dessus, j'ai créé une vue dans ma bibliothèque INTRANET, et donc ma requête est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select DBIFIL, DBIFLD, DBITYP, DBIFLN, DBINUL
    from intranet.qadbifld
    where DBILIB='<bibliothek>' and DBIFIL='<table>'
    order by DBIPOS
    voilà, pour ceux qu'ça intéresse
    Membre éclairé, lol !

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

Discussions similaires

  1. requete à 2 dimensions / structure de table dynamique
    Par fourchette dans le forum Requêtes
    Réponses: 2
    Dernier message: 31/08/2006, 10h02
  2. [SQL] Structure de table dynamique
    Par litbos dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 02/09/2005, 15h49
  3. recuperer la structure des tables
    Par mick84m dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/04/2005, 10h46
  4. Avantage Désavantage structuration de Table SQL
    Par jflebegue dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/12/2004, 18h40
  5. Dupliquer une structure de table
    Par deviltaz dans le forum Access
    Réponses: 4
    Dernier message: 13/10/2004, 13h41

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