web-dev-qa-db-fra.com

comment augmenter la longueur de sortie de la colonne sqlplus?

J'ai quelques requêtes pour connaître le ddl de certains objets d'un schéma ..__ Je reçois les colonnes de résultats 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, obtenant toujours le même résultat.

Toute aide en effet.

Merci

48
Mohamed Saligh

Je viens d'utiliser la commande suivante:

SET LIN[ESIZE] 200

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

EDIT: Pour plus de clarté, les commandes valides sont SET LIN 200 ou SET LINESIZE 200.

Cela fonctionne bien, mais vous devez vous assurer que la fenêtre de la console est suffisamment large. Si vous utilisez SQL Plus directement à partir de l'invite de commande MS Windows, la fenêtre de la console encapsulera automatiquement la ligne quelle que soit la propriété "Taille du tampon d'écran Largeur" définie, indépendamment de la spécification SQL Plus LINESIZE.

Comme suggéré par @simplyharsh, vous pouvez également configurer des colonnes individuelles pour afficher des largeurs définies, en utilisant COLUMN col_name FORMAT Ax (où x est la longueur souhaitée, en caractères). Cette fonction est utile si vous avez une ou deux colonnes très grandes et souhaitez afficher un résumé de leurs valeurs sur l'écran de la console.

51
oliver-clare

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

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

26
Martin Irigaray

Essaye ça

COLUMN nom_colonne FORMAT A24

où 24 est votre largeur.

12
simplyharsh

Sous 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
M.R

En plus de définir LINESIZE, comme l’a suggéré LordScree, vous pouvez également spécifier la sortie dans un fichier, afin de résoudre le problème de la largeur de la console. Voici comment je le fais:

set linesize 15000;
spool myoutput.txt;
SELECT 
...
spool off;
4
Marcel

En fait, même cela n'a pas fonctionné pour moi. Quand j'ai exécuté "select dbms_metadata.get_ddl ('TABLESPACE', 'TABLESPACE_NAME') dans dual;" De nouveau, je n’ai reçu que les trois premières lignes, mais cette fois, chaque ligne a été complétée à 15 000 caractères. J'ai pu contourner ce problème 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 évident qu'il devrait y avoir un moyen plus facile, mais je ne semblais pas pouvoir le trouver.

2
William Fraser

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 manque quelque chose? 

1
April Mc

Aucune de ces suggestions ne fonctionnait pour moi. J'ai finalement trouvé quelque chose d'autre que je pourrais 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 imprimait tout ce que je voulais - pas de troncature ou quoi que ce soit du genre. Et cela fonctionne directement dans sqlplus - pas besoin de le mettre dans un fichier séparé ou quoi que ce soit.

0
ArtOfWarfare