web-dev-qa-db-fra.com

Un formatage laid dans SQL * Plus

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.):

enter image description here

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:

enter image description here

15
Richard Knop

Augmenter la taille de la ligne, par exemple SET LINESIZE 32000

ou utilisez SET WRAP OFF (mais cela tronquera les valeurs longues)

21

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).

11
APC

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)

7
tbone

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.

4
Michael Ballent

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.

3
user4909653

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/

2
Bohdan

Cela a fonctionné pour moi:

SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;
1
Brad

En plus de toutes ces réponses: 

set colsep "&TAB"
0
Rijad Hadzic