Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 10/09/2008, 15h34   #1
Membre à l'essai
 
Inscription : mai 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 71
Points : 24
Points : 24
Par défaut Copie d'index à l'identique

Bonjour à tous

Je dois créer à la volée une table temporaire identique à ma table source.
J'ai tout d'abord fait ça :
Code :
1
2
 
CREATE TABLE temp AS SELECT * FROM source WHERE 1=0
J'ai ma table, mais pas les index.
Ensuite en fouillant sur le net, j'ai vu qu'on pouvait utiliser DBMS_METADATA

Code :
1
2
3
 
SELECT DBMS_METADATA.GET_DDL('TABLE','SOURCE') FROM dual
SELECT DBMS_METADATA.get_dependent_ddl('INDEX','SOURCE') FROM dual
J'ai bien le script de création de la table et le script de création des index, mais après je ne vois pas comment faire pour que ça s'applique à ma table TEMP...

Avez-vous une idée ?

Merci
iza76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 20h13   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

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

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Petit astuce! Essayez de remplacer la chaîne de caractères 'TABLE' par 'TEMP'
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2008, 13h56   #3
Membre à l'essai
 
Inscription : mai 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 71
Points : 24
Points : 24
Bonjour
Ca ne peut pas marcher... puisque le premier champ indique ce qu'on veut récupérer. J'ai tout de même testé, et Oracle me dit qu'il ne connait pas TEMP !
Une autre idée ?
Merci.
iza76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2008, 15h18   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

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

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Quelque chose comme
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SQL> r
  1* SELECT REPLACE(DBMS_METADATA.get_dependent_ddl('INDEX','EMP'),'EMP"','TEMP"') FROM dua
l
 
REPLACE(DBMS_METADATA.GET_DEPENDENT_DDL('INDEX','EMP'),'EMP"','TEMP"')
--------------------------------------------------------------------------------
 
  CREATE UNIQUE INDEX "MNI"."PK_TEMP" ON "MNI"."TEMP" ("EMPNO")
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "DATA"
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h33.


 
 
 
 
Partenaires

Hébergement Web