J'ai un tableau avec 100 colonnes. Lors de la sélection de données dans SQL Plus
la sortie se termine, ce qui la rend difficile à lire.
Ce que je préfère, c'est soit une barre de défilement horizontale apparaisse, soit envoyer la sortie à less
J'exécute les instructions suivantes dans SQLPlus -
SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;
Puis dans bash
je lance -
moins output.txt
La sortie semble toujours enveloppée et illisible.
Il ne suffit pas de forcer sqlplus à ne pas boucler les lignes. Il est également nécessaire d'indiquer à la visionneuse que vous utilisez pour afficher le fichier spoule de ne pas encapsuler les lignes. Si votre visionneuse est less
alors -S
L'option que vous devez utiliser selon https://superuser.com/questions/272818/how-to-turn-off-Word -wrap-in-less . Sous Unix/Linux, vous pouvez utiliser head -1 output.txt
Pour obtenir la première ligne d'un fichier et ainsi vérifier si cela est comme prévu ou vous pouvez utiliser od -c output.txt|head
Pour voir où les sauts de ligne sont réellement placés dans votre fichier de sortie.
Si vous affichez des colonnes LONGUES et que leurs valeurs contiennent des sauts de ligne, plusieurs lignes seront imprimées pour ces valeurs de colonne et vous ne pouvez pas remplacer cela avec les paramètres sqlplus.
Les commandes sqlplus suivantes peuvent être utiles:
SET LINESIZE linesize
La longueur de la ligne. Dans la plupart des cas, la valeur maximale de linesize
est 32767. Vous pouvez connaître votre valeur maximale si vous définissez LINESIZE sur une valeur non valide et consultez le message d'erreur afin que SET LINESIZE 0
Puisse donner SP2-0267: linesize option 0 out of range (1 through 32767)
(1)SET TRIMSPOOL ON
Sinon chaque ligne du fichier spool est remplie de blancs jusqu'à ce que la taille de la ligne soit atteinte.SET TRIMOUT ON
Sinon chaque ligne de la sortie est remplie de blancs jusqu'à ce que la taille de la ligne soit atteinte.SET WRAP OFF
Tronque la ligne si elle est plus longue que LINESIZE. Cela ne devrait pas se produire si la taille des lignes est suffisamment grande.SET TERMOUT OFF
Supprime l'impression des résultats sur la sortie. Les lignes sont toujours écrites dans le fichier spoule. Cela peut accélérer considérablement le temps d'exécution d'une déclaration.SET PAGESIZE 0
Pour définir une taille de page infinie et éviter les en-têtes, les titres, etc.SET
concernant la sortie (NUMWIDTH, NUMFORMAT, LONG, COLSEP) et les performances (ARRAYSIZE, LONGCHUNKSIZE).Vous devez utiliser la commande COLUMN
pour formater des colonnes individuelles.
Par exemple. column name format a30
Formatera la colonne name
dans la sortie à une longueur maximale de 30 caractères.
Si vous voulez que la taille d'affichage ne soit pas fixe mais qu'elle soit égale à la taille de la valeur réelle d'une colonne dans une ligne, la seule façon que je sache est que vous modifiez la clause select de votre instruction pour obtenir le résultat souhaité et utilisez l'opérateur de concaténation de chaînes ||
, par exemple.
select emp_id||' '||first_name||' '||last_name
from emp;
Une description complète de toutes les variables se trouve dans Guide de l'utilisateur et référence SQL * Plus .
Si vous souhaitez réutiliser certains paramètres (ou définitions de COLONNE), vous pouvez les stocker dans un fichier et exécuter ce fichier lorsque vous en avez besoin à nouveau. Vous pouvez même exécuter ce fichier automatiquement si vous démarrez sqlplus.
(1) "Comment trouver la valeur maximale LINESIZE (elle dépend du système) (Doc ID 1547262.1)"
Vous devez définir ce qui suit:
SET WRAP OFF
vous pouvez définir comme ça
SET WRAP OFF
SET PAGESIZE 0