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

SQL*Loader Oracle Discussion :

[9i] Migration par SQL Loader OU inserts avec DB link ???


Sujet :

SQL*Loader Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Points : 18
    Points
    18
    Par défaut [9i] Migration par SQL Loader OU inserts avec DB link ???
    Bonjour,

    J'ai deux bases V1 et V2, je dois migré le contenue d'une importante table maTable (80 millions de lignes) de la V1 vers 4 tables de la base V2 (selons des 4 critères) avec un petit mapping dont lequel j'ai besoin de quelques données de la V2.

    Je voulais savoir quelle est la plus meilleure (plus performante) façon de faire:

    - Passer par des inserts avec un database link de la V2 vers la V1.
    - Passer par des fichiers plats et Sql loader.
    - Création de view de maTable sur la base V2 puis des inserts
    ...

    Je veux savoir vos avis et/ou vos propositions

    Merci d'avance pour vos réponses.

  2. #2
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,
    personnellement je pense que je ferais un export/import de la table source vers une table provisoire dans la base cible, puis un traitement (genre procédure) à l'interne de la base cible pour répartir mes lignes dans les 4 tables finales...

    Au final tu n'aura plus qu'à supprimer ta table provisoire... mais dans le cas où ton traitement de répartition ne se passe pas comme tu veux, tu as toujours tes données sources déjà migrées dans la base cible pour pouvoir recommencer, donc sans ré-impacter la base source.
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  3. #3
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    Je rejoint Yorglaa sur la réponse.
    Je pense que Sql loader n'est pas très adapté pour ce genre de chose, la charge est trop importante.
    L'import/export est beaucoup plus rapide et comme dit Yorglaa si ton traitement échoue au moins les données sont déjà dans ta base cible.
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Yorglaa
    Salut,
    personnellement je pense que je ferais un export/import de la table source vers une table provisoire dans la base cible

    Evidement c'est aussi une piste, mais vous pensez pas que créer une copier de (80 millions d'enregitrement) en locale, est un double travail !!
    Est ce que la création d'une view sur la table V1 maTable n'est pas mieux ?

  5. #5
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,
    passer 80 millions de lignes via le réseau (vue avec DBLink) ne me semble pas vraiment "gratuit" en charge !

    Sans compter que comme tu dois faire du traitement pour ventiler tes lignes dans tes tables cibles, tu n'est pas à l'abri d'une erreur, d'un plantage réseau, ou tout autre de ces petits soucis qui jalonnent l'informatique et qui te fasse planter tout le traîtement... et là bonjour la perte de temps !

    Personnellement, pour transférer un tel nombre de lignes, je suis prêt à prendre les paris sur le fait que export/import est la solution la plus adaptée en terme de charge...
    évidemment ça implique de créer un "doublon" dans la base cible avant d'effectuer ta ventilation... mais je ne sais pas en l'état si l'espace disque est une contrainte majeure de ta problématique !
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Pas tout à fait d'accord
    En terme de performance, le plus éfficace sera d'exporter 4 fichiers à l'image des 4 tables finales, de copier ces fichiers sur la machine cible (en faisant éventuellement une copression intermédiaire) et d'effectuer un sql-loader en mode "DIRECT=TRUE".
    Je parle bien de performances, cette methode comporte un risque si les données ne sont pas en cohérence parfaite avec la cible finale (contraintes et indexs cassés....)

  7. #7
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    huuuum...
    dans ce cas tu fais faire le travail de répartition par la base source pour avoir tes 4 fichiers distinct.

    Hors si ces clauses de répartitions s'appuient sur des données pré-éxistantes dans la base cible, ça reste la cata puisqu'on repart sur des DBLinks.

    Je dis ça, je dis rien...

    Mais en partant du postulat que le schéma cible est différent du schéma source (puisqu'on va de 1 table vers 4 tables), rien ne me garantis que j'ai les éléments de répartition dans la bas source, je cites le Post initial :
    ...(selons des 4 critères) avec un petit mapping dont lequel j'ai besoin de quelques données de la V2...
    sinon pourquoi les transférer ?
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

Discussions similaires

  1. SQL Loader [10g] Insert
    Par Thomad dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 25/06/2007, 11h39
  2. Champs ignorés lors d'insertion par SQL Loader
    Par Bewitch dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 13/09/2006, 11h19
  3. Chargement table Oracle par SQL Loader
    Par Mike-lb dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 28/08/2006, 12h30
  4. [sql server]utiliser Insert avec une clé auto
    Par nourbane dans le forum ASP
    Réponses: 6
    Dernier message: 18/05/2006, 23h02
  5. Chargement de fichier par SQL LOADER
    Par davy.g dans le forum SQL*Loader
    Réponses: 17
    Dernier message: 15/11/2004, 13h08

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