Eu tenho uma mesa com 100 colunas. Ao selecionar dados na SQL Plus
saída, dificulta a leitura.
O que eu gostaria é que uma barra de rolagem horizontal apareça ou, de alguma forma, envie a saída para less
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 parece quebrada e ilegível.
Respostas:
Não basta forçar o sqlplus a não quebrar linhas. Também é necessário informar ao visualizador que você usa para exibir o arquivo de spool para não quebrar as linhas. Se o seu espectador é
less
, em seguida,-S
a opção que você tem que 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, assim, verificar se isso é o esperado ou podeod -c output.txt|head
ver para onde as quebras de linha são realmente colocadas no seu 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á substituí-lo nas 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 o seu valor máximo se definir LINESIZE com um valor inválido e verificar a mensagem de erro, paraSET LINESIZE 0
fornecerSP2-0267: linesize option 0 out of range (1 through 32767)
(1)SET TRIMSPOOL ON
caso contrário, todas as linhas no arquivo de spool serão preenchidas 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 atingido.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 relacionados à saída (NUMWIDTH, NUMFORMAT, LONG, COLSEP) e desempenho (ARRAYSIZE, LONGCHUNKSIZE).Você precisa usar o
COLUMN
comando para formatar colunas individuais.Por exemplo
column name format a30
, formatará a colunaname
na saída com um comprimento máximo de 30 caracteres.Se você deseja que o tamanho da exibição não seja corrigido, mas deve ser igual ao tamanho do valor real de uma coluna em uma linha, a única maneira que eu sei é que você altera a cláusula select da sua instrução para obter o resultado desejado e usar o operador de concatenação de cadeias
||
, por exemploUma descrição completa de todas as variáveis pode ser encontrada no Guia e Referência do Usuário do SQL * Plus .
Se você deseja reutilizar algumas configurações (ou definições COLUMN), é possível armazená-las em um arquivo e executá-lo quando precisar delas novamente. Você pode executar esse arquivo automaticamente se iniciar o sqlplus.
(1) "Como encontrar o valor máximo de LINESIZE (depende do sistema) (ID do documento 1547262.1)"
fonte
LONGCHUNKSIZE
não é apenas sobre o desempenho, parece ser necessário para evitar indesejável quebra de linha , além deLINESIZE
, apenas experimentou isso com saída inutilizável deDBMS_METADATA.get_ddl()
SET PAGESIZE 1000
em vez de0
outra forma cabeçalhos das colunas não imprimirá ao emitir SELECT" comandos. Referência .Você precisa definir o seguinte:
fonte
set linesize 30000
SET WRAP OFF
fez o truque para mim #você pode definir assim
fonte