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

Oracle Discussion :

sauvegarde avec requette sql


Sujet :

Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut sauvegarde avec requette sql
    Bonjour;

    sous TOAD il existe un moyen pour extraire les scripts de création des tables, des vues etc .... sous un fichier *.sql

    si je ne veux pas utiliser TOAD, comment je peux faire avec une requette sql pour récuperer les scripts des tables, vues, sequence et pourquoi pas les données aussi .... sous un fichier *.sql
    pour un utilisateur donnée


    merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    ca marche pour la version 10g aussi??

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bien sûr

    un simple teste suffira à le vérifier

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    j'ai fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    spool d:\test.txt;
    SELECT DBMS_METADATA.GET_DDL('TABLE','UISEC_HOST') FROM dual;
    mais le probleme c'est que le resultat est inexploitable
    quand j'execute ce que j'ai dans test.txt

    j'ai des erreur

    test.txt =
    j'ai commenté ca
    DBMS_METADATA.GET_DDL('TABLE','UISEC_HOST')
    avant de l'executer

    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
     
    DBMS_METADATA.GET_DDL('TABLE','UISEC_HOST')                                     
    --------------------------------------------------------------------------------
     
      CREATE TABLE "AA7020_PRD"."UISEC_HOST"                                        
       (	"NAME" VARCHAR2(32) NOT NULL ENABLE,                                       
    	"LOCATION" VARCHAR2(256),                                                      
    	"STATUS" NUMBER(3,0),                                                          
    	"EXPIREDDATE" DATE,                                                            
    	"GRANTPRIVILEGES" NUMBER(3,0),                                                 
    	"FULLNAME" VARCHAR2(80),                                                       
    	"REMARK" VARCHAR2(80) NOT NULL ENABLE,                                         
    	"STARTINFO" VARCHAR2(80)                                                       
       ) PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING            
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645         
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)              
      TABLESPACE "TS_AA7020"                                                        
     
     
     
     
    1 row selected.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    j'ai rien dis

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bah oui, il faut formater un minimum le résultat

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    et si je veux toutes les tables d'un user, je peux le faire en une seule commande sans avoir à dupliquer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dbms_metadata.get_ddl('TABLE','NOM_TABLE') from dual;
    pour chaque nom de table ???

    merci
    et désolé pour le dérangement

  9. #9
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    oui mais en PL/SQL avec un curseur sur dba_tables c'est pas un problème

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    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
    CREATE OR REPLACE PROCEDURE "PRC_SCRIPT_DUMP" IS
        CURSOR c_name_table IS
          SELECT TNAME
            FROM TAB;
     
            s_tabname VARCHAR(30) := '';    
            s_txt VARCHAR(4000) := '';
    BEGIN
        OPEN c_name_table;
        LOOP
            FETCH c_name_table INTO s_tabname;
            EXIT WHEN c_name_table%NOTFOUND;
            SELECT dbms_metadata.get_ddl('TABLE','PLATE') FROM dual;
        END LOOP;
        CLOSE c_name_table;
        --    
    EXCEPTION
        WHEN OTHERS THEN
            RAISE;
    END; -- Procedure
    /

    j'ai cette error
    PLS-00428: an INTO clause is expected in this SELECT statement

    je vois pas comment résoudre ca

  11. #11
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    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
    CREATE OR REPLACE PROCEDURE "PRC_SCRIPT_DUMP" IS
        CURSOR c_name_table IS
          SELECT TNAME
            FROM TAB;
            
            s_tabname VARCHAR(30) := '';    
            s_txt VARCHAR(4000) := '';
    BEGIN
        OPEN c_name_table;
        LOOP
            FETCH c_name_table INTO s_tabname;
            EXIT WHEN c_name_table%NOTFOUND;
            SELECT dbms_metadata.get_ddl('TABLE',s_tabname) FROM dual INTO S;
        END LOOP;
        CLOSE c_name_table;
        --    
    EXCEPTION
        WHEN OTHERS THEN
            RAISE;
    END; -- Procedure
    /
    ou plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    OPEN c_name_table;
        LOOP
            FETCH c_name_table INTO s_tabname;
            EXIT WHEN c_name_table%NOTFOUND;
            s:=dbms_metadata.get_ddl('TABLE',s_tabname);
        END LOOP;
        CLOSE c_name_table;
    ...
    ou encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT dbms_metadata.get_ddl('TABLE',TNAME)  FROM TAB;

  12. #12
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    En version 10 il est possible de récupérer tout le DDL des schémas avec le Data Pump. On peut aussi utiliser les paramètres INCLUDE ou EXCLUDE pour filtrer par type d'objet.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    merci pour cette commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT dbms_metadata.get_ddl('TABLE',TNAME)  FROM TAB;
    mais j'ai une erreur quand je la lance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ORA-31603: object "VVIS_TRK_PASSES_SIMPLE" of type TABLE not found in schema "hamza"
    ORA-06512: at "SYS.DBMS_METADATA", line 1546
    ORA-06512: at "SYS.DBMS_METADATA", line 1583
    ORA-06512: at "SYS.DBMS_METADATA", line 1901
    ORA-06512: at "SYS.DBMS_METADATA", line 2792
    ORA-06512: at "SYS.DBMS_METADATA", line 4333
    ORA-06512: at line 1

    VVIS_TRK_PASSES_SIMPLE est une vue, non pas une table

    pourquoi j'ai ca ??


    Merci

  14. #14
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Tu dois selectionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT dbms_metadata.get_ddl('TABLE',TNAME)  FROM TAB where
    TYPE='TABLE'
    Sinon , comme l'a dit orafrance, tu peux utiliser la vue dba_tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DBMS_METADATA.get_ddl ('TABLE', table_name)
      FROM dba_tables
     WHERE owner = 'toto'

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    cool merci

    comment je peux lancer une commande sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT dbms_metadata.get_ddl('TABLE',TNAME)  FROM TAB where
    TABTYPE='TABLE'
    à partir d'un fichier .bat

    j'ai fais ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sqlplus user/pass@base
    set pagesize 50000
    set linesize 500
    set feedback 50000
    spool d:\export.txt
    SELECT dbms_metadata.get_ddl('TABLE',TNAME)  FROM TAB where TABTYPE='TABLE';

    mais ca bloque apres la connexion


    une idée

    merci

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    pas d'idée ?

  17. #17
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Tu ne peux pas mettre ton sql dans ton .bat
    Fait un fichier sql (ex : tutu.sql) avec tes commandes sqlplus
    Et lance le dans ton bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sqlplus toto/titi@tata @tutu.sql

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Par défaut
    merci

    mais pourquoi j'ai que les deux premiere ligne de chaque table dans mon fichier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     CREATE TABLE "user"."PDI_TESTPIECE"                                                                         
       (	"PLATEID" VARCHAR2(20) NOT NU                                                     
      CREATE TABLE "user"."DELAY_CODE"                                           
       (	"DELAYCODE" NUMBER(5,0) NOT NULL
    merci

Discussions similaires

  1. etat récapitulatif avec requette sql (count)
    Par wiski08000 dans le forum Développement
    Réponses: 0
    Dernier message: 27/04/2014, 11h13
  2. Sauvegarde avec SQL server 2005 Express
    Par critok dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/10/2006, 14h09
  3. planifier une sauvegarde avec sql server 2005
    Par morados dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/06/2006, 14h09
  4. [vb.NEt]Requette SQL avec ADO
    Par charaf dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/05/2006, 14h16
  5. [RegEx] analyseur de requette SQL avec RegEx - [casse tête]
    Par sebbod dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2006, 10h56

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