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 :

Demande de conseil pour migration de lignes vers colonnes


Sujet :

Administration Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Demande de conseil pour migration de lignes vers colonnes
    Bonjour à tous,

    Ce message n'est pas vraiment une question mais une demande de conseil.

    Tout d'abord le décor :

    Oracle version 8i

    Nous avons deux tables :

    table_colonnes:
    num_pers
    col_a
    col_b
    col_c

    table_lignes:
    num_pers
    cod_ligne
    valeur_ligne

    Il va falloir ajouter des colonnes dans table_colonnes afin de migrer les données de table_lignes vers cette tables.

    Nous aurons donc au final:

    table_colonnes:
    num_pers
    col_a
    col_b
    col_c
    col_x
    col_y

    Dans laquelle le contenu de col_x et col_y contiendront valeur_ligne pour le même num_pers et un cod_ligne choisi.

    Ce que je voudrais savoir :

    Comment orienteriez vous le devollepement sachant qu'il y a environ 12 000 000 de lignes à migrer.

    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    On passe d'un modèle normalisé à un modèle dénormalisé.

    Je me créerai une nouvelle table TOTO qui est la jointure des deux tables indiquées. Une fois la table créé, je supprimerai l'ancienne table table_colonnes et je renommerais ma table TOTO en table_colonnes.

    Au niveau des rollback, ca ne devrait pas être trop gourmant, puisque ce ne sont que des insert.

    Laly.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    Joli !!!
    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
     
    Insert into
                   New_Table
    Select
              coalesce( a.num_pers , b.num_pers , c.num_pers ) ,
              coalesce( a.col_a , ' ' ) ,
              coalesce( a.col_b , ' ' ) ,
              coalesce( a.col_c , ' ' ) ,
              coalesce( b.valeur_ligne , ' ' ),
              coalesce( c.valeur_ligne , ' ' ) 
    from
             table_colonne a
      Full Join
             table_ligne     b
      on
             b.num_pers = a.num_pers and
             b.cod_ligne = :XB
      Full Join
             table_ligne     c
      on
             c.num_pers = a.num_pers and
             c.cod_ligne = :XC

  4. #4
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    C'est une insertion ponctuelle ou c'est des insert récurrents ?

    Si c'est ponctuel avec un changement de table_colonne, le 'create table as select' me semble pas mal, en suivant ensuite l'idée de Laly et en renommant la table résultat en table_colonne à la fin...

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    L'idée me semble bonne.

    Mais ce qui m'ennuie c'est le volume 18(mois) * 12 * 2 000 000.

    En plus les tables sont partitionnées par trimestre.

  6. #6
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Si c'est partitionné, c'est encore mieux, tu peux faire ta modif partition par partition et ensuite tu fais un échange entre la partition et la table temporaire, qqchose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table ... exchange partition ... with table ... including indexes without validation
    (syntaxe à vérifier).


    Laly.

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    c'est vrai j'y pensais même pas ....

    je laisse le topic ouvert au cas ou d'autres idées viendraient ....

    et je teste les différents cas .

    merci pour vos conseils

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Demande de conseils pour jeu en ligne
    Par geteo dans le forum Réseau et multijoueurs
    Réponses: 1
    Dernier message: 03/01/2014, 15h24
  2. Demande Conseils pour Migration ERP
    Par medaadi dans le forum Forum général ERP
    Réponses: 1
    Dernier message: 14/10/2009, 18h15
  3. Demande de Conseils pour migrer php4 vers php 5
    Par Apprentilinux dans le forum Langage
    Réponses: 1
    Dernier message: 31/03/2008, 20h06
  4. Demande de conseils pour réorientation vers l'info
    Par Nirgal dans le forum Emploi
    Réponses: 6
    Dernier message: 15/02/2007, 11h31
  5. Réponses: 16
    Dernier message: 15/11/2005, 21h07

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