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 :

Génération fichier .csv via une requête SQL


Sujet :

Import/Export Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 18
    Points : 21
    Points
    21
    Par défaut Génération fichier .csv via une requête SQL
    Bonjour à tous,

    Je débute sous Oracle, je dois écrire un script qui sera lancé quotidiennement par un ordonnanceur, il contiendra des requêtes SQL qui s'exécuteront sur une base Oracle, le résultat de chaque requête devra être exporté vers un fichier .csv (1 requête = 1 fichier .csv) qui sera importé par la suite par une application.

    je dispose déjà des requêtes SQL, questions :

    1) Est-il possible de se connecter à une base Oracle en ligne de commande via sqlplus ?

    2) Existe-t-il une commande d'export vers un fichier .csv sous Oracle ?

    Merci pour votre aide.

    Cordialement

  2. #2
    Membre habitué
    Homme Profil pro
    Data Ingenieur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Data Ingenieur
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 162
    Points
    162
    Par défaut
    Bonjour,

    Oui tu peux utiliser directement Sqlplus pour te connecter à la base oracle. En ce qui concerne l'export en csv, je n'ai pas à ma connaissance une commande qui peut te faire ça simplement. Il y a des outils ( notament Jdevelopper/Sqldevelopper) qui peuvent le faire.

    Sinon tu peux lancer l'export directement via sqlplus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    connexion via Sqlplus puis
    set pagesize 0
    spool export.csv
    select Col1||','||col2 from ma_table;
    spool off

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 58
    Points : 86
    Points
    86
    Par défaut
    Bonjour,

    Je me permets de compléter la réponse de attila771:

    Pour se connecter a une base avec sqlplus, il faut utiliser une commande du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $> sqlplus user/mdp@TNS
    ou
    $> sqlplus user/mdp@serveur:port/SID
    ou
    $> sqlplus user/mdp@serveur:port/service_name
    (par ailleurs, s'il n'était pas possible de se connecter a Oracle avec sqlplus, je ne vois pas trop à quoi servirait l'outil )

    Pour l'export en CSV, les méthodes décrites par attila771 fonctionnent très bien.

    Par contre, pour le spool, je te conseille de regarder les commandes suivantes également:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SET TRIMSPOOL ON (Histoire de ne pas avoir moult espaces inutiles dans le fichier généré, ce qui augmente sa taille)
    SET LINESIZE n (spécifier le "n")
    SET HEAD OFF (au besoin)
    SET FEEDBACK OFF (au besoin)
    SET VERIFY OFF (au besoin)
    sqlplus dispose de beaucoup de commandes "SET" très utiles pour formater la sortie comme tu le souhaite, et la documentation sur le sujet ne manque pas
    Tuning and optimization are not a fix to a bad design. A good design is a fix to a bad design.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 281
    Points
    281
    Par défaut Et pour le coté batch...
    Bonjour,

    Encore un petit dernier pour la route :
    depuis la ligne de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sqlplus -s -l user/mdp@TNS @mon_fichier_sql.sql
    -l pour le cas ou la connexion échoue
    -s pour éviter l'affichage de labannire sqlplus

    et dans mon_fichier_sql.sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    -- Gestion des sortie en cas d'erreur
    whenever sqlerror exit sqlcode
    whenever oserror exit 1
     
    set termout off
     
    -- La requete de attila771
     
    exit;
    termout off pour éviter que tout le contenu n'apparaisse à l'écran ce qui pénalise pas mal.

    Pozzo

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    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 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Le SET COLSEP est fort utile pour générer un .CSV, puisqu'il permet de choisir le séparateur de colonnes, et donc un point-virgule si on le souhaite.

    Ainsi, en mettant ce qui suit dans "c:\temp\script.sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    set colsep ";"
    set trimspool on
    set heading off
    set echo off
    set feedback off
    set pagesize 0
     
    spool c:\temp\resu.csv
    select * from scott.emp;
    spool off
    Puis en appelant ce script
    On obtient un fichier CSV parfaitement valable, sans avoir eu besoin de concaténer explicitement les différentes colonnes.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 18
    Points : 21
    Points
    21
    Par défaut Merci
    Merci à tous pour votre aide

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

Discussions similaires

  1. [XL-2003] Envoyer le fichier Excel via une requête post
    Par totoen dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/10/2010, 08h19
  2. Export CSV d'une requête SQL
    Par david33b dans le forum Langage
    Réponses: 1
    Dernier message: 01/09/2010, 14h40
  3. exportation de d'un fichier csv vers une table sql
    Par sanounatibibt dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/01/2010, 16h59
  4. MAJ d'un fichier texte par une requête sql
    Par kayserfc dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/12/2009, 08h39
  5. Récupurer via une requête SQL la valeur la plus proche
    Par yoda_style dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/04/2004, 13h52

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