J'ai une table avec 100 colonnes. Lorsque vous sélectionnez des données dans SQL Plus
les enveloppes de sortie, cela rend la lecture difficile.
Ce que je préfère, c’est que la barre de défilement horizontale apparaisse ou que je transmette le résultat à less
Je lance les instructions suivantes dans SQLPlus -
SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;
Puis bash
je cours -
moins output.txt
La sortie semble toujours encapsulée et illisible.
Réponses:
Il ne suffit pas de forcer sqlplus à ne pas envelopper de lignes. Il est également nécessaire d'indiquer à la visionneuse que vous utilisez pour afficher le fichier de spool afin de ne pas envelopper les lignes. Si votre lecteur est
less
alors-S
l'option que vous devez utiliser conformément à https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less . Sous Unix / Linux, vous pouvez utiliserhead -1 output.txt
pour obtenir la première ligne d’un fichier et vérifier si le résultat estod -c output.txt|head
conforme aux attentes. Vous pouvez également savoir où sont placés les sauts de ligne dans votre fichier de sortie.Si vous affichez les colonnes LONG et que leurs valeurs contiennent des sauts de ligne, plusieurs lignes seront imprimées pour ces valeurs de colonne et vous ne pourrez pas remplacer cela par des 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 pourlinesize
est 32767. Vous pouvez connaître votre valeur maximale si vous définissez LINESIZE sur une valeur non valide et vérifier le message d'erreur pourSET LINESIZE 0
pouvoir donnerSP2-0267: linesize option 0 out of range (1 through 32767)
(1)SET TRIMSPOOL ON
sinon, chaque ligne du fichier spool est remplie avec des blancs jusqu'à ce que la taille de la ligne soit atteinte.SET TRIMOUT ON
sinon, chaque ligne de la sortie est remplie avec des 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 arriver si lineize est suffisamment grand.SET TERMOUT OFF
supprime l'impression des résultats à la sortie. Les lignes sont toujours écrites dans le fichier spool. Cela peut accélérer beaucoup le temps d'exécution d'une déclaration.SET PAGESIZE 0
définir une taille de page infinie et éviter les en-têtes, les titres, etc.SET
paramètres concernant la sortie (NUMWIDTH, NUMFORMAT, LONG, COLSEP) et les performances (ARRAYSIZE, LONGCHUNKSIZE).Vous devez utiliser la
COLUMN
commande pour formater des colonnes individuelles.Par exemple
column name format a30
, formatera la colonnename
dans la sortie avec 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 des colonnes d'une rangée, le seul moyen que je connaisse est de modifier la clause select de votre instruction pour obtenir le résultat souhaité et l'utiliser. l'opérateur de concaténation de chaîne
||
, p.ex.Vous trouverez une description complète de toutes les variables dans le Guide de l'utilisateur et de référence de SQL * Plus .
Si vous souhaitez réutiliser certains paramètres (ou définitions COLUMN), vous pouvez les stocker dans un fichier et exécuter ce fichier lorsque vous en avez de nouveau besoin. Vous pouvez même exécuter ce fichier automatiquement si vous démarrez sqlplus.
(1) "Comment trouver la valeur maximale LINESIZE (dépend du système) (ID de document 1547262.1)"
la source
LONGCHUNKSIZE
est pas seulement sur la performance, il semble nécessaire pour éviter les files d'emballage indésirables en plus deLINESIZE
, juste expérimenté avec cette sortie inutilisable deDBMS_METADATA.get_ddl()
SET PAGESIZE 1000
au lieu de0
sinon les en-têtes de colonnes ne seront pas imprimés lors de l’émission des commandes "SELECT". Référence .Vous devez définir les paramètres ci-dessous:
la source
set linesize 30000
SET WRAP OFF
a fait le tour pour moivous pouvez définir comme ça
la source