programing

SQL*Plus에서 잘못된 형식 지정

subpage 2023. 7. 18. 21:44
반응형

SQL*Plus에서 잘못된 형식 지정

SQL*Plus에서 다음과 같은 선택 명령을 실행하는 것은 정말 짜증나는 일입니다.

SELECT * FROM books;

출력 형식이 잘못되어 읽을 수 없습니다(행 셀이 행에 있지 않고 줄 바꿈 등으로 구분됨).

enter image description here

SELECT 결과를 더 좋은 방식으로 표시하도록 구성하려면 어떻게 해야 합니까?

편집:

이것은 제 로그인입니다.sql 파일 내용:

SET ECHO OFF
SET SERVEROUTPUT ON SIZE 1000000
SET PAGESIZE 999
SET LINESIZE 132

EDIT2:

LINE SIZE 증가 제공:

SET LINESIZE 32000

이제 다음과 같이 표시됩니다.

enter image description here

선 크기를 늘립니다(예:SET LINESIZE 32000

또는 사용SET WRAP OFF(하지만 긴 값이 잘립니다.)

SQL Plus는 간단한 명령줄 도구입니다. 그것은 사실 예쁜 보도를 위한 것이 아닙니다. 그러나 SQL Plus 사용 설명서에 나와 있는 몇 가지 형식 지정 명령이 있습니다.자세히 알아보세요.

예를 들어 TITLE 열 형식을 선택하여 처음 20자만 표시하고 SUMMARY 열 전체를 다음과 같이 표시할 수 있습니다.

COLUMN title FORMAT a20 TRUNCATED 
COLUMN summary FORMAT a4o WORD_WRAPPED

이렇게 하면 투영에 형식 지정 명령을 포함하지 않고 쿼리가 보다 깔끔하게 배치된 것을 볼 수 있습니다.

또는 Quest의 Toad 또는 Oracle의 자체 SQL Developer와 같은 IDE를 사용합니다.이러한 도구에는 쿼리 결과를 더 보기 좋은 그리드에 자동으로 표시하는 쿼리 브라우저가 포함되어 있습니다. (다른 유사한 도구도 사용할 수 있습니다.)

아래와 같은 스크립트 만들기

#!/bin/ksh
FILE="/tmp/queryResult.csv"
sqlplus -s /nolog << !EOF!
connect username/password

SET PAGESIZE 50000
SET LINESIZE 250
SET NUMWIDTH 5
SET FEEDBACK OFF
set echo off
set heading on
set headsep off
set wrap off
SET COLSEP ","
column Title format a22
column Summary format a15

SPOOL $FILE

Select * from books;

SPOOL OFF
EXIT
!EOF!

스크립트를 sqlscript 파일에 저장합니다.sql 파일에 대한 권한 설정

chmode +x sqlscript.sql

스크립트 및 파이프 실행 명령 수 감소

./sqlscript.sql | less -S

출력이 터미널에 설정된 열보다 긴 경우 "S" 옵션을 사용하여 화살표 키로 스크롤할 수 있습니다.

또는 원하는 텍스트 편집기에서 FILE="/tmp/queryResult.csv"를 다운로드하여 열 수 있습니다.

요구 사항에 따라 LINE SIZE, Numwidth, 열 문자 크기(a22)를 조정합니다.

일부는 이 조언을 좋아하지 않을 수도 있지만(SqlPlus를 사랑하는 몇 명의 DBA를 생각할 수 있습니다), Toad 또는 SQL Developer와 같은 IDE를 사용하는 것이 좋습니다.Oracle을 처음 사용하는 경우 sqlplus를 사용하면 시간을 되돌린 것처럼 느낄 수 있습니다. IMO는 SQLPlus가 아닌 Oracle을 배우면서 시간을 보내십시오.(아, 그리고 선택한 IDE에서 놀면서 개념 가이드를 읽으십시오.)

열의 실제 내용에 맞도록 열 너비를 정의합니다.

col column_name1 format a20  -- sets column to be 20 characters wide
col column_name2 format a15  -- sets column to be 15 characters wide
set line 80

select column_name1, column_name2 from books;

이것이 당신을 도울 것입니다.

이렇게 하면 출력을 더 예쁘게 만들 수 있습니다.

SET PAGESIZE 0
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 1000
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET MARKUP HTML OFF SPOOL OFF
SET COLSEP ' '

출처: http://larig.wordpress.com/2011/05/29/formatting-oracle-output-in-sqlplus/

Csv 스타일, 그러나 깨끗함:

SQL> set markup csv on

다음과 같은 모든 답변에 추가합니다.

set colsep "&TAB"

이것은 저에게 효과가 있었습니다.

SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;

sqlplus에 대시가 너무 많이 표시되면 줄 크기가 너무 크다는 의미입니다.적어도 콘솔의 크기보다 커야 합니다. -> 콘솔의 너비에 맞을 때까지 줄 크기를 줄입니다.

언급URL : https://stackoverflow.com/questions/5771573/ugly-formatting-in-sqlplus

반응형