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 :

Export d'une certaine période sur Oracle


Sujet :

Import/Export Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Export d'une certaine période sur Oracle
    Bonjour,

    Savez-vous s'il est possible de faire un export d'une certaine période sur un base Oracle ?
    Je m'explique j'aimerai faire des exports réguliers d'une de mes bases, exporter 4 mois de cette base dans un fichier dump.
    Ma base contient 2 schémas.

    Par exemple : exporter la base avec les données qui vont du 1er janvier au 31 avril puis du 1er mai au 30 Aout, etc ...

    Merci pour votre aide.

    David

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 68
    Points
    68
    Par défaut
    Bonjour,
    Vous pouvez utiliser la procédure dbms_datapump.data_filter.
    Par exemple:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    --Oracle 11.1.0.7
    set serveroutput on size 100000
    declare
        V_DMP_NAME  constant  VARCHAR2( 400 ) :=   'THIS_YEAR';
        V_START_DATE  constant   DATE :=   trunc(sysdate,'YEAR');   
        V_SOURCE_SCHEMA constant   VARCHAR2(30):='TEST';
        V_DIRECTORY    constant VARCHAR2(30) := 'DATA_PUMP_DIR';
        --
        V_HANDLE NUMBER;
        job_state VARCHAR2( 400 );
        V_DATE_STR  VARCHAR2(400 ) := 'to_date('''||to_char(V_START_DATE,'DD/MM/YYYY')||''',''DD/MM/YYYY'')';
    begin
        V_HANDLE := dbms_datapump.open (operation => 'EXPORT', job_mode => 'SCHEMA', job_name => V_DMP_NAME ||'_EXP', version => 'COMPATIBLE');
        dbms_datapump.add_file(handle => V_HANDLE, filename =>  V_DMP_NAME || '.DMP', directory => V_DIRECTORY, filetype => dbms_datapump.KU$_FILE_TYPE_DUMP_FILE );     
        dbms_datapump.add_file(handle => V_HANDLE, filename =>  V_DMP_NAME ||'_EXPORT.LOG', directory => V_DIRECTORY, filetype => dbms_datapump.KU$_FILE_TYPE_LOG_FILE); 
        dbms_datapump.metadata_filter(handle => V_HANDLE, name => 'SCHEMA_EXPR', value => 'IN('''||V_SOURCE_SCHEMA||''')');     
     
        --une table parente:
        dbms_datapump.data_filter( handle=>V_HANDLE ,name=>'SUBQUERY' ,schema_name=> V_SOURCE_SCHEMA ,table_name=>'ORDER',value=>
            'where ORDER_ID in (select CO.ORDER_ID from '||V_SOURCE_SCHEMA||'.ORDER CO '
            ||' where CO.CREATE_TIME >= '|| V_DATE_STR || ' and not exists '
            ||' ( select 1 from '||V_SOURCE_SCHEMA||'.ORDER CO2 where CO2.ORDER_ID = CO.PARENT_ORDER_ID and CO2.CREATE_TIME < '|| V_DATE_STR 
            ||'))'
            );
        --une table fille
        dbms_datapump.data_filter( handle=>V_HANDLE ,name=>'SUBQUERY' ,schema_name=> V_SOURCE_SCHEMA ,table_name=>'ITEM',value=>
            'where ITEM_ID in (select IT.ITEM_ID from '||V_SOURCE_SCHEMA||'.ITEM IT where exists'
            ||'(select 1 from '||V_SOURCE_SCHEMA||'.ORDER CO where CO.ORDER_ID = IT.ORDER_ID and CO.CREATE_TIME >='||V_DATE_STR
            ||' and not exists '
            ||'(select 1 from '||V_SOURCE_SCHEMA||'.ORDER CO2 where CO2.ORDER_ID = CO.PARENT_ORDER_ID and CO2.CREATE_TIME <' ||V_DATE_STR ||')'
            ||'))'
            ); 
        --
        dbms_datapump.start_job(handle => V_HANDLE, skip_current => 0, abort_step => 0); 
        dbms_datapump.wait_for_job(handle => V_HANDLE , job_state=> job_state ); 
        dbms_output.put_line( 'job_state= '|| job_state );
    end;
    /

Discussions similaires

  1. [AC-2007] resultat d'une procédure stockée sur oracle
    Par Vyl.Coyot dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/05/2010, 13h37
  2. connection d'une base de données sur oracle XE avec une application dévéloppée sur oracle forms
    Par nouhatahfouna dans le forum Connexions aux bases de données
    Réponses: 0
    Dernier message: 29/03/2010, 22h17
  3. Réponses: 4
    Dernier message: 28/03/2009, 00h49
  4. [Conception] faire un select sur un enregistrement durant une certaine période
    Par brazilia28 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/12/2006, 16h54

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