Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Import/Export
Import/Export Forum d'entraide sur les outils d'import/export Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2006, 10h45   #1
Membre du Club
 
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 67
Points : 67
Par défaut tables d'un schema

Bonjour,

Je souhaite obtenir la description des tables situées dans un schema, avec si possible l'indication des clés primaires, étrangères.
(Après plusieurs commandes infructueuses dans SQL+ je viens demander votre aide)

(Je souhaite faire du reverse engineering)

Merci.
jonathan1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 11h10   #2
Membre régulier
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 85
Points : 85
Pour récupérer les scripts de création des tables de ton schéma, tu peux utiliser Toad (FreeToad si tu n'as pas la licence), il te génère les scripts de création de tes tables, PK, FK ....
Harry Potter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 11h11   #3
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
La liste des tables d'un schéma peut être obtenue rapidement avec:
Citation:
SELECT * FROM cat;
Pour avoir le code SQL de création de tous les objets d'un schéma, une solution (avec l'inconvénient que le fichier .sql doit être retravaillé):

Citation:
exp <schéma>/<password> owner=<schéma> file=<schéma>.exp rows=n
imp <schéma>/<password> file=<schéma>.exp show=y log=<schéma>.sql
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 11h12   #4
Membre du Club
 
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 67
Points : 67
Merci pour cette réponse rapide, je vais essayer.
jonathan1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 12h06   #5
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Code :
SELECT dbms_metadata.get_ddl('TABLE','NOM_TABLE','NOM_SCHEMA') FROM DUAL;
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 12h49   #6
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Avec:

Citation:
set long 1000
Sinon SQL*Plus tronque le résultat à:

Code :
1
2
3
4
 
SQL> SHOW long
long 80
SQL>
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 15h51   #7
Membre du Club
 
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 67
Points : 67
Je ne parviens pas à éxecuter le script :
exp <schéma>/<password> owner=<schéma> file=<schéma>.exp rows=n

faut-il utiliser EXP.EXE ?
Code :
1
2
SELECT dbms_metadata.get_ddl('TABLE','NOM_TABLE','NOM_SCHEMA') FROM DUAL;?????
Le résultat de cette commande est "Nom de colonne nom valide"
Dual ne contient presque rien :

D
-
X

Le logiciel Toad ne me permet pas de générer du script en version gratuite.

Merci pour votre aide
jonathan1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 16h22   #8
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SQL> CREATE TABLE TEST4(ID NUMBER);
 
TABLE créée.
 
SQL> SELECT dbms_metadata.get_ddl('TABLE','TEST4','MON_SCHEMA') "DDL" FROM DUAL;
 
DDL
--------------------------------------------------------------------------------
 
 
  CREATE TABLE "MON_SCHEMA"."TEST4"
   (    "ID" NUMBER
   ) PCTFREE 10 PCTUSED 40 INITR
 
 
SQL> SET long 4000
SQL> SELECT dbms_metadata.get_ddl('TABLE','TEST4','MON_SCHEMA') "DDL" FROM DUAL;
 
DDL
--------------------------------------------------------------------------------
 
 
  CREATE TABLE "MON_SCHEMA"."TEST4"
   (    "ID" NUMBER
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 1048576 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "DATA"
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 16h32   #9
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Quelle est la version d'Oracle sur le serveur ?
Sous Unix, l'outil d'export c'est exp et sous Windows c'est exp.exe avec Oracle 9.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 16h35   #10
Membre du Club
 
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 67
Points : 67
Il y a plus de deux cents tables dans le schéma.
Je n'arrive vraiment pas à éxecuter cette commande...(dbms_metadata...)
jonathan1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2006, 16h51   #11
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Pour avoir quelquechose de plus industriel :
- tout faire en PLSQL
- utiliser DBDesigner (gratuit) : Bases de données -> Reverse Engineering. Puis Fichier -> Exporter -> Script
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 09h06   #12
Membre du Club
 
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 67
Points : 67
Bonjour,

Plutôt efficace comme logiciel (DBDesigner4), ca fait plaisir.
Merci pour votre aide.

(la version d'oracle utilisée est un client9i sous win).

Pour info,
Code :
1
2
 
SELECT dbms_metadata.get_ddl('TABLE','TEST4','MON_SCHEMA') "DDL" FROM DUAL;
Peux-tu m'expliquer
Code :
SELECT....('TABLE'?????,'NOM_TABLE'OK,'NOM_SHEMA'OK) "DDL"???? FROM DUAL
jonathan1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 10h40   #13
Membre Expert
 
Avatar de nuke_y
 
Inscription : mai 2004
Messages : 1 812
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1 812
Points : 1 609
Points : 1 609
Tu précises comme 1er argument le type d'objet dont tu veux récupérer le DDL.

Code :
SELECT dbms_metadata.get_ddl('TABLE','MA_TABLE','MON_SCHEMA') "DDL" FROM DUAL;
Code :
SELECT dbms_metadata.get_ddl('INDEX','MON_INDEX','MON_SCHEMA') "DDL" FROM DUAL;
Code :
SELECT dbms_metadata.get_ddl('PROCEDURE','MA_PROC','MON_SCHEMA') "DDL" FROM DUAL;
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Mon combat pour les droits des consommateurs face aux abus des grandes marques.
nuke_y est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2006, 13h39   #14
Membre du Club
 
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 67
Points : 67
Merci pour cette réponse.
jonathan1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 12h12   #15
Membre du Club
 
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 67
Points : 67
Citation:
Plutôt efficace comme logiciel (DBDesigner4)
Le problème c'est qu'il est fait pour MySQL. Si on exporte un modèle en sql, on ne peut pas l'executer sous postgreSQL ou open office base par exemple.
C'est dommage.
Il existe peut être un plugin permettant de faire comme powerAMC (choisir le type de sql).
jonathan1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h38.


 
 
 
 
Partenaires

Hébergement Web