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 :

[8i]export dump 2 tables avec jointure et param query


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut [8i]export dump 2 tables avec jointure et param query
    Bonjour,

    Voilà j'ai 2 énormes tables liés en 1-N et je souhaiterais les exporter en fesant un dump.

    En gros :

    Table A
    -CleA

    TableB
    -CleB
    -CleA
    -DateTime

    j'ai tenté plusieurs choses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exp user/mdp@tns tables=tableA,tableB query="where tableA.cleA=tableB.cleA and tableB.DateTime<'31/12/2005'"
    Et en commençant par la table la plus complexe à exporter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exp user/mdp@tns tables=tableA query="where cleA in (select cleA from tableB where DateTime<'31/12/2005')"
    ni l'un ni l'autre ne marche, il semble que la clause query de l'utilitaire exp soit trés limité. Quelqu'un pourrait me donner une piste quand à la manière de procéder ?


  2. #2
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Comme tu est en 10g c’est mieu d’utiliser expdp au lieu de exp.
    C'est quoi l'OS ?
    C'est quoi l'erreur ?

    Voici la syntaxe :

    Windows (note that the double quote character needs to be 'escaped'):

    D:\> expdp scott/tiger DIRECTORY=my_dir DUMPFILE=exp_cmd.dmp LOGFILE=exp_cmd.log TABLES=emp,dept QUERY=emp:\"WHERE ename LIKE 'A%'\"

    Unix (note that all special characters need to be 'escaped'):

    % expdp scott/tiger \
    DIRECTORY=my_dir DUMPFILE=exp_cmd.dmp LOGFILE=exp_cmd.log TABLES=emp,dept \
    QUERY=emp:\"WHERE ename LIKE \'A\%\'\"

  3. #3
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    en fait je suis en 8i sur ce serveur

    je me suis emèlè les pinceaux entre mes différents serveurs

    Donc je suis sur du oracle 8i sur un windows 2003 serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exp user/mdp@tns tables=tableA,tableB query="where tableA.cleA=tableB.cleA and tableB.DateTime<'31/12/2005'"
    erreur : LRM-00101 : nom de paramètre 'cleA' inconnu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exp user/mdp@tns tables=tableA query="where cleA in (select cleA from tableB where DateTime<'31/12/2005')"
    LRM-00112 : une seule valeur est autorisé pour le paramètre 'query'

    voilà

  4. #4
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    si tu essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exp user/mdp@tns tables=tableA,tableB query="'where tableA.cleA=tableB.cleA and tableB.Date ime<\'31/12/2005\''"

  5. #5
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    Connecté à: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.7.0.0 - Production
    Export fait dans le jeu de car WE8ISO8859P1 et jeu de car NCHAR WE8ISO8859P1

    Prêt à exporter les tables spécifiées ... via le chemin classique...
    . . export de la table tableA
    EXP-00056: Erreur ORACLE 904 rencontré
    ORA-00904: Nom de colonne non valide
    . . export de la table tableB
    EXP-00056: Erreur ORACLE 904 rencontré
    ORA-00904: Nom de colonne non valide
    Export terminé correctement avec des avertissements.
    j'ai aussi éssayé avec

    exp user/mdp@tns tables=tableA,tableB query=\"where tableA.cleA=tableB.cleA and tableB.DateTime<'31/12/2005'\"
    entre temps car j'ai trouvé des exemples écris comme ça sur le net mais même méssage d'érreur qu'avec ton écriture.

    Pourtant je suis bien sur que les colonnes existent

    la requete : select * from tableA, tableB where tableA.cleA=tableB.cleA and tableB.DateTime<'31/12/2005' s'éxécute parfaitement sur sqlplus avec le même user

  6. #6
    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
    La clause query doit d'appliquer à toutes les tables exportées.

    Le plus simple est:
    - d'avoir une command export par table
    - de définir la clause dans un fichier paramètre pour s'affranchir de l'interprétation de la ligne commande

    Exemple:
    Si le fichier tableA.par contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query="where cleA in (select cleA from tableB where DateTime<'31/12/2005')"
    exécuter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exp user/mdp@tns tables=tableA parfile=tableA.par

  7. #7
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    essaye de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QUERY="'..............'"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QUERY=nom_du_schema:"'..............'"

  8. #8
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    @pifor

    Prêt à exporter les tables spécifiées ... via le chemin classique...
    . . export de la table tableA
    EXP-00056: Erreur ORACLE 904 rencontré
    ORA-00904: Nom de colonne non valide
    @bouyao
    erreur : LRM-00101 : nom de paramètre 'cleA' inconnu


    pourtant je vous jure que cleA existe bien dans la tableA et tableB

  9. #9
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Une dernière chose,

    dans
    tu remplace tns par le SID de la base.

  10. #10
    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
    Finalement, je pense que cela ne peut pas marcher car on ne doit pouvoir que référencer des colonnes de la table à exporter dans le paramètre query.

    Solution de contournement: créer une table temporaire avec CREATE TABLE ... AS SELECT ... exporter cette table sans clause query et supprimer la table temporaire.

  11. #11
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    Citation Envoyé par bouyao
    Une dernière chose,

    dans
    tu remplace tns par le SID de la base.
    oui oui

    @pifor

    oui ou créer une colonne "toexport" sur chaque table, et marquer les rows à exporter

Discussions similaires

  1. Export d'une table avec champs date
    Par luna007 dans le forum Administration
    Réponses: 5
    Dernier message: 26/06/2009, 09h32
  2. mise à jour de table avec jointure
    Par NorexaMS dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/03/2009, 14h09
  3. Table avec jointure et modification
    Par guen dans le forum Modélisation
    Réponses: 5
    Dernier message: 02/04/2008, 22h06
  4. Liaison entre tables avec jointure
    Par Janitrix dans le forum Zend_Db
    Réponses: 2
    Dernier message: 08/09/2007, 12h12
  5. DELETE multi-tables avec jointures
    Par Xunil dans le forum Requêtes
    Réponses: 13
    Dernier message: 23/10/2006, 16h44

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