Il est vraiment ennuyeux que lorsque j'exécute une commande de sélection dans SQL * Plus telle que:
SELECT * FROM books;
La sortie est vraiment mal formatée et illisible (les cellules d'une ligne ne sont pas alignées mais séparées par des sauts de ligne, etc.):
Comment puis-je le configurer pour afficher les résultats SELECT de manière plus agréable?
MODIFIER:
Voici le contenu de mon fichier login.sql:
SET ECHO OFF
SET SERVEROUTPUT ON SIZE 1000000
SET PAGESIZE 999
SET LINESIZE 132
EDIT2:
Affer augmentant le LINESIZE:
SET LINESIZE 32000
Cela ressemble maintenant à ceci:
Augmenter la taille de la ligne, par exemple SET LINESIZE 32000
ou utilisez SET WRAP OFF
(mais cela tronquera les valeurs longues)
SQL Plus est un outil simple en ligne de commande. Ce n'est pas vraiment destiné à de jolis reportages. Cependant, certaines commandes de formatage sont décrites dans le Guide de l'utilisateur SQL Plus. En savoir plus .
Par exemple, vous pouvez choisir de formater la colonne TITLE pour n’afficher que les vingt premiers caractères et d’afficher la colonne SUMMARY dans son intégralité, comme suit:
COLUMN title FORMAT a20 TRUNCATED
COLUMN summary FORMAT a4o Word_WRAPPED
Cela vous permettra de mieux structurer votre requête sans intégrer de commandes de formatage dans sa projection.
Vous pouvez également utiliser un IDE tel que le TOAD de Quest ou le propre développeur SQL d'Oracle. Ces outils incluent un navigateur de requêtes qui affiche automatiquement les résultats de nos requêtes dans une grille plus agréable. (D'autres outils similaires sont disponibles).
Certains peuvent ne pas aimer ce conseil (je peux penser à quelques administrateurs de base qui adorent SqlPlus), mais vous pouvez utiliser un IDE comme Toad ou SQL Developer . Si vous débutez avec Oracle, sqlplus vous donnera l'impression de remonter dans le temps! Messieurs, passez votre temps à apprendre Oracle, pas SQLPlus. (oh, et lisez le Guide des concepts en jouant dans votre IDE de votre choix)
Il suffit de définir la largeur des colonnes pour qu’elle s’adapte au contenu réel des colonnes.
col column_name1 format a20 -- sets column to be 20 characters wide
col column_name2 format a15 -- sets column to be 15 characters wide
set line 80
select column_name1, column_name2 from books;
Cela devrait vous aider.
Faire un script comme ci-dessous
#!/bin/ksh
FILE="/tmp/queryResult.csv"
sqlplus -s /nolog << !EOF!
connect username/password
SET PAGESIZE 50000
SET LINESIZE 250
SET NUMWIDTH 5
SET FEEDBACK OFF
set echo off
set heading on
set headsep off
set wrap off
SET COLSEP ","
column Title format a22
column Summary format a15
SPOOL $FILE
Select * from books;
SPOOL OFF
EXIT
!EOF!
Enregistrer le script dans un fichier, à savoir sqlscript.sql Définir l’autorisation sur le fichier
chmode +x sqlscript.sql
lance le script et passe en commande moins
./sqlscript.sql | less -S
"S" option vous permettra de faire défiler avec les touches fléchées, si la sortie est plus longue que les colonnes définies dans le terminal.
Sinon, vous pouvez télécharger et ouvrir FILE = "/ tmp/queryResult.csv" dans l'éditeur de texte de votre choix.
Ajustez LINESIZE, NUMWIDTH, taille de caractère de colonne (a22) selon vos besoins.
Cela peut rendre la sortie plus jolie:
SET PAGESIZE 0
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 1000
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET MARKUP HTML OFF SPOOL OFF
SET COLSEP ' '
Source: http://larig.wordpress.com/2011/05/29/formatting-Oracle-output-in-sqlplus/
Cela a fonctionné pour moi:
SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;
En plus de toutes ces réponses:
set colsep "&TAB"