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

Administration Oracle Discussion :

Comment créer une table à partir d'une autre table


Sujet :

Administration Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Salarié
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Salarié
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Comment créer une table à partir d'une autre table
    Bonjour,
    j'ai besoin de créer une table à partir d'une autre table qui contient plus de 400 colonnes (champs). j'aimerai dans ma nouvelle table ne prendre que les 200 premières colonnes.
    pouvez-vous me dire comment faire ?
    merci pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Points : 339
    Points
    339
    Par défaut
    Bonjour,

    C'est une chose tout à fait facile grâce à la syntaxe CREATE TABLE ... AS SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE nouvelle_table
    AS 
    SELECT liste des 200 colonnes
    FROM table_source;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Salarié
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Salarié
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    bonjour et merci pour votre réponse, mais en fait ma question était peut être pas complète. En effet, c'est justement la liste des 200 noms de champs que je veux éviter d'écrire !!!
    je pensai qu'il y avait un autre moyen...

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Vous pouvez construire ce select à partir de catalogue (all_tab_columns) ou d'un requêteur graphique, mais dans tous les cas il faudra bien indiquer la liste des deux cents colonnes qui vous intéresse.

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Il suffit de générer la liste des colonnes pour faire un copier coller :
    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
    SQL> desc scott.emp;
     Name                                                  Null?    Type
     ----------------------------------------------------- -------- ------------------------------------
     EMPNO                                                 NOT NULL NUMBER(4)
     ENAME                                                          VARCHAR2(10)
     JOB                                                            VARCHAR2(9)
     MGR                                                            NUMBER(4)
     HIREDATE                                                       DATE
     SAL                                                            NUMBER(7,2)
     COMM                                                           NUMBER(7,2)
     DEPTNO                                                         NUMBER(2)
     
    SQL> select listagg(column_name, ', ') WITHIN GROUP (ORDER BY column_id)
      2    from all_tab_columns
      3   where owner = 'SCOTT'
      4     and table_name = 'EMP'
      5     and column_id <= 5;
     
    LISTAGG(COLUMN_NAME,',')WITHINGROUP(ORDERBYCOLUMN_ID)
    ----------------------------------------------------------------------------------------------------
    EMPNO, ENAME, JOB, MGR, HIREDATE
     
    SQL>
    Si vous n'êtes pas en 11GR2 (ou plus) alors regardez String Aggregation Techniques pour d'autres méthodes.

Discussions similaires

  1. [Artichow] Comment créer un graphe à partir d'une table mysql avec deux colonnes
    Par Amel_B dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 24/12/2013, 15h50
  2. Update d'une table à partir de deux autres tables
    Par Peewee766 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 04/05/2008, 19h08
  3. comment créer un rpm à partir d'une lib source
    Par kris1 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 06/12/2007, 17h35
  4. Réponses: 4
    Dernier message: 20/03/2007, 09h54
  5. creer une autre table à partir d'une requete
    Par papou34 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/02/2007, 22h42

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