Tenho uma tabela com 100 colunas. Ao selecionar dados nos SQL Plus
wraps de saída, dificultando a leitura.
O que eu gostaria é que uma barra de rolagem horizontal aparecesse ou de alguma forma enviasse a saída paraless
Eu executo as seguintes instruções no SQLPlus -
SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;
Então bash
eu corro -
menos output.txt
A saída ainda aparece embrulhada e ilegível.
Não é suficiente forçar o sqlplus a não quebrar as linhas. Também é necessário informar ao visualizador que você usa para visualizar o arquivo em spool para não quebrar as linhas. Se o seu visualizador for a opção
less
que-S
você deve usar de acordo com https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less . No Unix/Linux, você pode usarhead -1 output.txt
para obter a primeira linha de um arquivo e verificar se isso é o esperado ou pode usarod -c output.txt|head
para ver onde as quebras de linha são realmente colocadas no arquivo de saída.Se você exibir colunas LONG e seus valores contiverem quebras de linha, várias linhas serão impressas para esses valores de coluna e você não poderá anular isso com as configurações do sqlplus.
Os seguintes comandos sqlplus podem ser úteis:
SET LINESIZE linesize
o comprimento da linha. Na maioria dos casos, o valor máximo paralinesize
é 32767. Você pode descobrir seu valor máximo se definir LINESIZE como um valor inválido e verificar a mensagem de erro, entãoSET LINESIZE 0
pode darSP2-0267: linesize option 0 out of range (1 through 32767)
(1)SET TRIMSPOOL ON
caso contrário, cada linha no arquivo de spool será preenchida com espaços em branco até que o tamanho da linha seja atingido.SET TRIMOUT ON
caso contrário, cada linha na saída será preenchida com espaços em branco até que o tamanho da linha seja alcançado.SET WRAP OFF
Trunca a linha se for maior que LINESIZE. Isso não deve acontecer se o tamanho da linha for grande o suficiente.SET TERMOUT OFF
suprime a impressão dos resultados na saída. As linhas ainda são gravadas no arquivo de spool. Isso pode acelerar muito o tempo de execução de uma declaração.SET PAGESIZE 0
para definir um tamanho de página infinito e evitar títulos , títulos e assim por diante.SET
parâmetros relativos à saída (NUMWIDTH, NUMFORMAT, LONG, COLSEP) e desempenho (ARRAYSIZE, LONGCHUNKSIZE).Você tem que usar o
COLUMN
comando para formatar colunas individuais.Por exemplo
column name format a30
, irá formatar a colunaname
na saída para um comprimento máximo de 30 caracteres.Se você deseja que o tamanho da exibição não seja fixo, mas deve ser igual ao tamanho do valor real de uma coluna em uma linha, a única maneira que conheço é alterar a cláusula select de sua instrução para obter o resultado desejado e usar o operador de concatenação de strings
||
, por exemploUma descrição completa de todas as variáveis pode ser encontrada no Guia do Usuário e Referência do SQL*Plus .
Se você quiser reutilizar algumas configurações (ou definições de COLUNAS), você pode armazená-las em um arquivo e executá-lo quando precisar delas novamente. Você ainda pode executar este arquivo automaticamente se iniciar o sqlplus.
(1) "Como encontrar o valor máximo LINESIZE (é dependente do sistema) (Doc ID 1547262.1)"
Você precisa definir o abaixo:
você pode definir assim