hello tout le monde,
J'aimerai faire des sripts d'export SQPL Plus (à moins que Toad permette d'exporter dans un fichier directement sans afficher bêtement).
Lorsque j'utilise SQL Plus, j'ai bêtement des espaces sur certains champs comme le gars sur le post :
http://stackoverflow.com/questions/6...-using-sqlplus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 TABLE_PRIVILEGE_MAP ,SYSTEM SYSTEM_PRIVILEGE_MAP ,SYSTEM STMT_AUDIT_OPTION_MAP ,SYSTEM DUAL ,SYSTEM ...
Je loin d'être le seul. Il envisageait meme d'utiliser sed pour reformater. Etant sous Windows, ce n'est pas envisageable; peut être à la rigeur Notepadd++ à l'extrème rigueur si je n'arriverai jamais à obtenir un simple :
et pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part valeur_champs1;valeur_champs2;valeur_champs3;12/12/2003;2;44555445;totot
Code : Sélectionner tout - Visualiser dans une fenêtre à part valeur_champs1;valeur_champs2 ;valeur_champs3 ;12/12/2003;2;44555445;totot
Je suis en train donc de faire mes petites recherches à gauche et à droite d'exemple d'en tête, ici dur DVP et ailleurs
J'en ai un peu marre de ne jamais obtenir un bon fichier csv avec sqlplus, je vais donc investiguer sur les commandes une par une.
Voici la premère entete que je prends comme exemple du 1er lien juste au dessus :
set colsep ; -- separate columns with a comma
set pagesize 0 -- No header rows
set trimspool on -- remove trailing blanks
set headsep ";" -- this may or may not be useful...depends on your headings.
set linesize X -- X should be the sum of the column widths
set numw X -- X should be the length you want for numbers (avoid scientific notation on IDs)
set pagesize 0
=> pour ne rien afficher à chaque top de page.
SET NEWP[AGE] {1|n|NONE}
SET NEWPAGE is not supported in iSQL*Plus
Sets the number of blank lines to be printed from the top of each page to the top title. A value of zero places a formfeed at the beginning of each page (including the first page) and clears the screen on most terminals. If you set NEWPAGE to NONE, SQL*Plus does not print a blank line or formfeed between the report pages.
set trimspool on
=> pour supprimer quelques espaces mais je vois pas trop ou.
SET TRIMS[POOL] {ON|OFF}
SET TRIMSPOOL is not supported in iSQL*Plus
Determines whether SQL*Plus allows trailing blanks at the end of each spooled line. ON removes blanks at the end of each line. OFF allows SQL*Plus to include trailing blanks. TRIMSPOOL ON does not affect terminal output.
set headsep ";"
=> opérateur de séparation entre chaque champs
set linesize X
=> je ne sais pas trop quoi mettre. Il s'agirait de la largeur de l'affichage, or je ne peux pas connaitre précisement. J'ai des champs avec du textes qui peuvent contenter 10 caractères et d'autres 200 caractères.
Ce qui est dit, c'est que cela définit la largeur de chaque colonne proportionnellement plus petite ou plus grande. Si je mets une valeur trop grande, j'ai peur d'avoir des espaces du coup!!!
set numw XTo control the width of the data displayed, use the SET LINESIZE command.
Columns output for the DESCRIBE command are typically allocated a proportion of the linesize currently specified. Decreasing or increasing the linesize with the SET LINESIZE command usually makes each column proportionally smaller or larger. This may give unexpected text wrapping in your display. For more information, see the SET command later in this chapter.
=> il semblerait que ce soit pour l'affichage des nombres. Je ne pense pas que ce soit très utile enfin de compte.
SQL*Plus formats NUMBER data right-justified. A NUMBER column's width equals the width of the heading or the width of the FORMAT plus one space for the sign, whichever is greater. If you do not explicitly use FORMAT, then the column's width will always be at least the value of SET NUMWIDTH.
ma source : https://docs.oracle.com/cd/B10501_01...90842/ch13.htm
Autre entête que j'ai appercu sur dvp :
http://www.developpez.net/forums/d14...itation-spool/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 set serveroutput on set termout off set echo off set linesize 1000 set pagesize 100000 set newpage none set feedback off set heading off set headsep off set trimspool on spool off spool SHOKAI.20150101
set serveroutput on
=> j'ai du mal à comprendre l'interêt de cette commande pour du pure export. Je crois que c'est plus pour affiche du texte en live en PL/SQL
set termout off
=> pratique pour éviter d'afficher le résultat de la requete dans la console et uniquement directement dans le fichier.
https://www.safaribooksonline.com/li...7469/re85.html
set newpage none
=>
https://www.safaribooksonline.com/li...7469/re76.htmlNONE
Causes SQL*Plus to do nothing at all when a page break occurs. You'll get no blank lines and no formfeed.
Je dois prendre le train, je vais continuer mon investigation un peu plus tard. Je pense que cela va aider égalent pas mal de monde qui ne cherche qu'un simple export tout bête comme le fait très bien excel (pour citer un exemple). J'imagine que c'est une demande récurrente.
Partager