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

Import/Export Oracle Discussion :

Problème d'import dans un schema existant


Sujet :

Import/Export Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 30
    Par défaut Problème d'import dans un schema existant
    Bonjour,

    J'ai un soucis (ou un trou de memoire) quand je veux importer un export (owner) dans un schema existant.

    En fait je veux rafraîchir une base de test à partir de ma base de prod tous les jours.

    L'erreur que j'ai est :
    IMP-00019: ligne rejetÚe en raison de l'erreur ORACLE 1
    IMP-00003: Erreur ORACLE 1 rencontrÚe
    ORA-00001: violation de contrainte unique (GENXXXXX.PK_373673979)
    Ma version d'oracle est la 11.1.6.0.
    Et ma ligne de commande est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imp system/xxxx@DWHXXX Fromuser=GENXXX TOUSER=GENXXX FILE="D:\GENXXX.DMP" IGNORE=Y
    Il me semble bien qu'on peut rafraîchir une base existante... mais je commence à avoir un doute... serait-ce sur un autre SGBD ?

    Ou alors j'ai mal paramétré ma base...

    Merci de votre aide

  2. #2
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut
    De mes connaissances, non ce n'est pas possible.

    Le mieux que tu puisses faire c'est mettre un ignore = YES, à ce moment là les lignes déjà existantes (même clé primaire) seront ignorées, mais en aucun cas mises à jour.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 30
    Par défaut
    Citation Envoyé par macben Voir le message
    De mes connaissances, non ce n'est pas possible.

    Le mieux que tu puisses faire c'est mettre un ignore = YES, à ce moment là les lignes déjà existantes (même clé primaire) seront ignorées, mais en aucun cas mises à jour.
    J'avais bien mis Ignore=Y mais j'avais de erreurs..
    Mais j'ai contourné le probleme en ajoutant dans mon .BAT de mise à jour
    l'execution d'un fichier SQL qui fait un truncate de mes tables.

    Comme celà j'ai bien les dernieres données en ligne.

    Merci de ton aide

  4. #4
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut
    Citation Envoyé par gallargues Voir le message
    J'avais bien mis Ignore=Y mais j'avais de erreurs..
    Mais j'ai contourné le probleme en ajoutant dans mon .BAT de mise à jour
    l'execution d'un fichier SQL qui fait un truncate de mes tables.
    En règle général en effet il est fait un TRUNCATE avant l'import, mais je pensais que tu voulais venir enrichir ta table avec de nouvelles lignes sans perdre les "anciennes" lignes mais sans pour autant avoir de doublons.

  5. #5
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Import avec ignore=Y comme l' a dit pomalaix importe les données de la table en rajoutant les lignes à la table existante .
    S'il y a une contrainte (clé primaire par exemple), les lignes existantes déjà
    ne seront pas rajoutées mais engendreront une erreur dans le log d'import.
    Ce qui peut rendre illisible le log de l'import .

    mais à la fin de l'import, les deux schémas seront bien identiques

    En général, pour mettre à jour un schéma :
    - suppression de l'utilisateur dans la base de test
    - création de l' utilisateur dans la base de test
    - import de l'utilsateur avec ignore=no (par défaut)

    cdlt

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par macben Voir le message
    Le mieux que tu puisses faire c'est mettre un ignore = YES, à ce moment là les lignes déjà existantes (même clé primaire) seront ignorées, mais en aucun cas mises à jour.
    Que nenni, ce que vous dites est un grave contresens !
    IGNORE=YES signifie : si la table existe déjà, je ne considère pas ça comme une erreur et je charge les données à la suite de l'existant. Avec le risque de provoquer des doublons...
    IGNORE=NO signifie : si la table existe déjà, je considère ça comme une erreur, je ne charge rien et je passe à la table suivante.

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 30
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Que nenni, ce que vous dites est un grave contresens !
    IGNORE=YES signifie : si la table existe déjà, je ne considère pas ça comme une erreur et je charge les données à la suite de l'existant. Avec le risque de provoquer des doublons...
    IGNORE=NO signifie : si la table existe déjà, je considère ça comme une erreur, je ne charge rien et je passe à la table suivante.
    Je suis bien d'accord avec toi....

    IGNORE= Yes signifie qu'il ne se met pas en erreur pour la creation de la structure de la table mais ajoute les données..

    Cdt

  8. #8
    Membre expérimenté Avatar de Ahmed AANGOUR
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Janvier 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Janvier 2010
    Messages : 139
    Par défaut
    Pourquoi s'embêter à utiliser l'export/import en 11g ?
    En utilisant datapump tu pourrais faire un rafraichissement de ta base de test à partir de ta base de prod sans passer par un fichier dump.
    En créant un dblink tu peux importer ce que tu veux dans ta base de test à partir de ta base de prod.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    impdp HR/HR tables=employees network_link=base_prod
    Dans cet exemple tu importes la table EMPLOYEES de ta base de prod dans le schéma HR de ta base de test. BASE_PROD correpsond à un database link pointant sur ta base de PROD.

    Tu peux aller sur la doc Oracle pour en savoir plus:
    http://download.oracle.com/docs/cd/E...t.htm#i1007380

    A+

  9. #9
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    IGNORE=YES signifie : si la table existe déjà, je ne considère pas ça comme une erreur et je charge les données à la suite de l'existant. Avec le risque de provoquer des doublons...
    Mais si il met IGNORE=YES et que ses contraintes sont correctement posées il n'aura pas de doublons ?!

    Par contre les lignes non-existantes dans cette table seront rajoutées et ces logs ne seront pas remplis de messages d'erreurs "inutiles" dans son cas ?!

    N'hésites pas à me dire si je me trompe

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

Discussions similaires

  1. [AC-2007] problème d'import dans une feuille excel
    Par rominous41 dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/05/2011, 12h40
  2. Problème d'import dans jsp
    Par Invité dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/05/2011, 08h53
  3. Problème d'import dans Eclipse
    Par Jobard81 dans le forum Eclipse
    Réponses: 0
    Dernier message: 02/12/2010, 11h32
  4. Réponses: 8
    Dernier message: 26/01/2006, 14h47
  5. Réponses: 7
    Dernier message: 23/11/2005, 18h20

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