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 Donn�es ORACLE


Sujet :

Import/Export Oracle

  1. #1
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Par d�faut Export Donn�es ORACLE
    Bonjour,

    Je souhaite exporter des tables ORACLE en CSV avant purge. Je ne dispose pas de l'acc�s aux outils oracle exp, ... (uniquement un Toad, python, ...)

    Je viens de faire un Python (d�butant) qui descend tr�s rapidement ces donn�es en CSV ce qui me convient parfaitement.
    N�anmoins, c'est la construction du curseur qui est longue et gourmande, apr�s la descente en CSV est ultra rapide.

    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
     
    # -*- coding: utf-8 -*-
    import cx_Oracle
    import csv
     
    db = cx_Oracle.connect('U', 'P', 'BDD', encoding="utf-8", nencoding="utf-8")
     
    cur = db.cursor()
    cur.execute('select * from MA_GROSSE_TABLE')
     
    csv_file = open("C:\\Users\\MA_GROSSE_TABLE.csv", "w", encoding='utf8')
    writer = csv.writer(csv_file, delimiter=';', lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
     
    i = 0
     
    for result in cur.fetchmany(10000000):
        i = i+1
        checkdigit = 9 - (i-1) % 1000
        if checkdigit == 0:
            print(i)
        writer.writerow(result)
     
    cur.close()
    db.close()
    csv_file.close()
    La question en fait c'est, Y a t-il un moyen avec Oracle de lire une table en s�quentiel sans la phase longue de construction du curseur en limitant au maximum la charge sur le serveur ?
    J'ai vraiment juste besoin des data non tri�es au cas ou

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    D�veloppeur Oracle
    Inscrit en
    D�cembre 2019
    Messages
    1 176
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur Oracle

    Informations forums :
    Inscription : D�cembre 2019
    Messages : 1 176
    Par d�faut
    Bonjour,

    Si tu as Toad pourquoi n'utilises-tu pas la fonction d'export de Toad?
    Que veux-tu dire par "phase longue de construction du curseur"? Un curseur n'est qu'une b�te r�f�rence vers une requ�te. Quelle est la volum�trie de ta table?

  3. #3
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Par d�faut
    Bonjour,

    Le PB c'est que j'ai des table de plusieurs dizaines de millions d'enregistrements.
    J'ai bien fait un export TOAD mais il me faut au moins une dizaine d'heure par table ce qui est possible bien sur.

    Quand je parle de phase de construction, je voulais dire qu'un select * from doit d�abord positionner le r�sultat dans un buffer (il s'execute completement) avant de laisser la main l'envoi vers le fichier.
    J'aurai voulu un moyen de ne pas passer par cette phase interm�daire et faire un dump direct des donn�es. Je ne suis pas expert

    Merci.

  4. #4
    Membre Expert
    Homme Profil pro
    D�veloppeur Oracle
    Inscrit en
    D�cembre 2019
    Messages
    1 176
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur Oracle

    Informations forums :
    Inscription : D�cembre 2019
    Messages : 1 176
    Par d�faut
    Oui le plus rapide reste quand Data Pump avec l'option parallel. Sinon tu peux lancer plusieurs processus Python concurrents en d�coupant ta requ�te en plusieurs morceaux. Si tu as une colonne sur laquelle tu peux te baser (un id, une date..) par exemple tu pourrais faire:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    select * from ma_grosse_table
    where id between 1 and 100000;
     
    select * from ma_grosse_table
    where id between 100001 and 200000;
    ...

    Ca te g�n�rera plusieurs fichiers que tu pourras fusionner une fois finis.

  5. #5
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Par d�faut
    Tr�s bonne id�e, je vais partir la dessus.

    Merci beaucoup.

Discussions similaires

  1. Import et Export une base de donn�e Oracle
    Par Sabact dans le forum Oracle
    R�ponses: 22
    Dernier message: 29/09/2006, 17h49
  2. Comment exporter une base de donn�e oracle � l'aide de EXP
    Par med_anis_dk dans le forum Import/Export
    R�ponses: 6
    Dernier message: 16/06/2006, 14h27
  3. exporter une base de donn�e oracle
    Par med_anis_dk dans le forum Oracle
    R�ponses: 3
    Dernier message: 14/06/2006, 20h28
  4. Export de donn�es oracle
    Par morteza dans le forum Oracle
    R�ponses: 7
    Dernier message: 08/03/2006, 17h09
  5. Export de donn�es Oracle vers Excel via PHP
    Par Yanos dans le forum Oracle
    R�ponses: 1
    Dernier message: 11/01/2006, 18h11

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