comment augmenter la longueur de sortie de la colonne sqlplus?

j'ai quelques requêtes pour trouver la ddl de certains objets d'un schéma. Je reçois les colonnes de résultats sont tronquées au milieu des requêtes.

Comment puis-je augmenter le avec de la colonne?

j'ai essayé avec

SET SERVEROUTPUT ON SIZE 1000000;
SET LINESIZE 50000;
set pagesize 50000;
set long 50000;

mais, on obtient toujours le même résultat.

N'importe quelle aide en effet.

Merci

47
demandé sur Mohamed Saligh 2011-09-12 11:52:44

9 réponses

je viens d'utiliser la commande suivante:

SET LIN[ESIZE] 200

(de http://ss64.com/ora/syntax-sqlplus-set.html).

cela fonctionne très bien, mais vous devez vous assurer que votre fenêtre de console est assez large. Si vous utilisez SQL Plus direct from MS Windows Command Prompt, la fenêtre de la console enveloppera automatiquement la ligne à n'importe quelle taille de tampon D'écran Largeur" la propriété est définie, indépendamment de toute SQL Plus LINESIZE spécification.

comme suggéré par @simplyharsh, vous pouvez aussi configurer des colonnes individuelles pour afficher les largeurs de jeu, en utilisant COLUMN col_name FORMAT Ax (où x est la longueur désirée, en caractères) - ceci est utile si vous avez un ou deux grandes colonnes et vous souhaite juste d'afficher un résumé de leurs valeurs dans l'écran de la console.

46
répondu oliver-clare 2018-01-23 15:18:33

cette configuration fonctionne pour moi:

set termout off
set verify off
set trimspool on
set linesize 200
set longchunksize 200000
set long 200000
set pages 0
column txt format a120

column définition de format avec le linesize option a permis d'éviter la troncature à 80 caractères.

26
répondu Martin Irigaray 2017-04-04 09:25:09

Essayez ceci

colonne col_name FORMAT A24

où 24 est votre largeur.

11
répondu simplyharsh 2011-09-12 08:00:04

sur Linux essayez ceci:

set wrap off
set trimout ON
set trimspool on
set serveroutput on
set pagesize 0
set long 20000000
set longchunksize 20000000
set linesize 4000
7
répondu M.R 2018-06-29 15:18:30

en plus de configurer la linéarisation, comme LordScree l'a suggéré, vous pouvez également spécifier la sortie d'un fichier, pour résoudre le problème avec la largeur de la console. Voici comment je le fais:

set linesize 15000;
spool myoutput.txt;
SELECT 
...
spool off;
4
répondu Marcel 2013-01-24 12:24:48

en fait, même ça n'a pas marché pour moi. Lorsque j'ai exécuté " select dbms_metadata.get_ddl('ESPACE','TABLESPACE_NAME') from dual;" j'ai de nouveau eu seulement les trois premières lignes, mais cette fois, chaque ligne a été complétée à 15 000 caractères. J'ai été en mesure de contourner ce avec:

select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),80) from dual;
select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),160) from dual;
select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),240) from dual;

il semblait bien qu'il devait y avoir un moyen plus facile, mais je n'ai pas pu le trouver.

2
répondu William Fraser 2013-04-12 18:42:31

Ce que j'utilise:

set long 50000
set linesize 130

col x format a80 word_wrapped;
select dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA') x from dual;

ou est-ce que je rate quelque chose?

1
répondu April Mc 2015-03-05 23:14:49

aucune de ces suggestions ne fonctionnait pour moi. J'ai enfin trouvé quelque chose d'autre que je pouvais faire - dbms_output.put_line. Par exemple:

SET SERVEROUTPUT ON
begin
for i in (select dbms_metadata.get_ddl('INDEX', index_name, owner) as ddl from all_indexes where owner = 'MYUSER') loop
  dbms_output.put_line(i.ddl);
end loop;
end;
/

Boom. Il a imprimé tout ce que je voulais - pas de tronçonnage ou quelque chose comme ça. Et qui fonctionne directement dans sqlplus - pas besoin de le mettre dans un fichier séparé ou quoi que ce soit.

0
répondu ArtOfWarfare 2018-01-19 21:26:37

Sur Windows, vous pouvez essayer ceci:

  • clic droit dans la fenêtre sqlplus
  • sélectionnez propriétés ->mise en page
  • augmenter la largeur de la zone tampon de l'écran à 1000
-4
répondu prasanna 2015-02-07 14:14:40