Bonjour,
voila, j'ai fait un petit outil qui permet d'exporter toutes les tables d'une instance !
Maintenant je voudrait pouvoir les creer a la volée et pour ca je cherche une vue qui me donne le DDL de chaque tables ...
MErci !
Bonjour,
voila, j'ai fait un petit outil qui permet d'exporter toutes les tables d'une instance !
Maintenant je voudrait pouvoir les creer a la volée et pour ca je cherche une vue qui me donne le DDL de chaque tables ...
MErci !
all_tab_columns, all_contraints, all_indexes, etc...
Oui ok !
J'ai cherché dans toute ces vue, mais j'en ai pas trouvé une pour laquelle je fasse un truc dans le genre :
Par exemple ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DDL FROM ALL_DLLS WHERE TABLE_NAME = 'MA_TABLE'
Le package DBMS_METADATA est là pour cela.
Merci SheikYerbouti pour ta reponse constructive ...
Je vais voir ce que je trouve !
si tu as un export de tes tables tu peux les re créer avec l'import sans pour autant inserer les lignesEnvoyé par SubZero2
oui mais je fait tout ca en Delphi et je charge mes tables avec SQLLoader.
Mon seul souci c'est que si la table n'existe pas, je voudrait la creer mais en incluant les tablespaces, index, ...
Je n'arrive pas a lancer une requetye avec DBMS_METADATA dans SqlPLus
Requete :
Reponse: Invalid Column Name
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DBMS_METADATA.GET_DDL('TABLE','USER_ALL_TABLES.MA_TABLE') FROM USER_ALL_TABLES;
'USER_ALL_TABLES.MA_TABLE' n'est pas un nom de table
USER_ALL_TABLES non plus d'ailleurs, c'est user_tables ou all_tables
essaye :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DBMS_METADATA.GET_DDL('TABLE','MA_TABLE') FROM ALL_TABLES;
Toujours invalid column name ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DBMS_METADATA.GET_DDL('TABLE','MA_TABLE') FROM ALL_TABLES;
Peux tu envoyer le message d'erreurEnvoyé par SubZero2
all_tables ne sert à rien au fait
T'as le droit de chercher un minimum aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','TAB$','SYS') from dual; DBMS_METADATA.GET_DDL('TABLE','TAB$','SYS') -------------------------------------------------------------------------------- CREATE TABLE "SYS"."TAB$" ( "OBJ#" NUMBER NOT NULL ENABLE, "DATAOBJ#" N
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SQL> desc DBMS_METADATA ... FUNCTION GET_DDL RETURNS CLOB Nom d'argument Type E/S par défaut ? ------------------------------ ----------------------- ------ -------- OBJECT_TYPE VARCHAR2 IN NAME VARCHAR2 IN SCHEMA VARCHAR2 IN DEFAULT VERSION VARCHAR2 IN DEFAULT MODEL VARCHAR2 IN DEFAULT TRANSFORM VARCHAR2 IN DEFAULT ...
Et c'est ce que j'ai :
http://www.dba-oracle.com/art_builde...ema_syntax.htm
Il doit quand meme servir a quelque chose le USER_TABLES ?? non ?set pagesize 0
set long 90000
set feedback off
set echo off
spool scott_schema.sql
connect scott/tiger;
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
FROM USER_INDEXES u;
spool off;
Oui mais dans ce cas il n'y a pas de ''
DDL de toutes les tables de USER_TABLES dont le nom est récupéré dans la colonne u.table_name. u étant l'alias de la table USER_TABLES
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
DDL de la table MA_TABLE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT DBMS_METADATA.GET_DDL('TABLE','MA_TABLE') FROM dual;
Bon, je doi etre le pire des boulets alors :
Me renvoi "Invalid Column Name" quand meme alors que TOTO existe bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DBMS_METADATA.GET_DDL('TABLE','TOTO') FROM dual;
merci de penser aux balises code
Tu utilises bien SQL*Plus ? Sinon il faut voir avec le logiciel que tu utilises.
C'est quoi l'erreur exacte ?
J'utilise bien SQL*Plus.
Voici tout ce que j'ai a l'ecran :
Est-il possible que ce package ne soit pas present sur le serveur ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','TOTO') FROM DUAL; SELECT DBMS_METADATA.GET_DDL('TABLE','TOTO') FROM DUAL * ERREUR à la ligne 1 : ORA-00904: invalid column name
Je blaspheme peut etre la ...
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
24
25
26
27
28
29 SQL> set long 20000 SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','MESSAGES') FROM dual; DBMS_METADATA.GET_DDL('TABLE','MESSAGES') -------------------------------------------------------------------------------- CREATE TABLE "ATENA"."MESSAGES" ( "CODE" NUMBER(5,0) NOT NULL ENABLE, "TEXTE" VARCHAR2(256) NOT NULL ENABLE, "TITRE" VARCHAR2(100), "STOP" VARCHAR2(1) DEFAULT 'N' NOT NULL ENABLE, "ALERTE" VARCHAR2(15), CONSTRAINT "MSG_PK" PRIMARY KEY ("CODE") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) DBMS_METADATA.GET_DDL('TABLE','MESSAGES') -------------------------------------------------------------------------------- TABLESPACE "ATENA_IDX" ENABLE, CONSTRAINT "AVCON_1069336221_STOP_000" CHECK (STOP IN ('O', 'N')) ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 2097152 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "ATENA_DATA" SQL>
non ce serait pas cette erreur
que donne :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part desc DBMS_METADATA
Code : Sélectionner tout - Visualiser dans une fenêtre à part desc dual
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SQL> desc dual Nom NULL ? Type ----------------------------------------- -------- ---------------------------- DUMMY VARCHAR2(1)Mon blaspheme, n'en etait donc pas un !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SQL> desc DBMS_METADATA ERROR: ORA-04043: object DBMS_METADATA does not exist
BOn bah voila, merci messieurs, je pense que je vais me retourner vers mon expert oracle !
connecte toi system
Et la version d'Oracle ? http://www.developpez.net/forums/viewtopic.php?t=318843
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager