oracle sqlplus에서 테이블 데이터를 보다 명확하게 표시하는 방법
다른 열 아래에 있는 모든 열이 아니라 선택 항목에서 얻은 데이터를 예쁘게 표시할 수 있도록 하고 싶습니다.
sqlplus에서 테이블 데이터를 표시하는 방법은 다음과 같습니다.
하지만 다음과 같이 보여드리고 싶습니다.
Name | Address | Phone |
-------+---------------+-------------+
name1 | address1 | phone1 |
name2 | address2 | phone2 |
name3 | address3 | phone3 |
각 열이 다른 열 아래에 없음
저는 보통 이렇게 시작합니다.
set lines 256
set trimout on
set tab off
봐주세요help set
도움말 정보가 설치되어 있는 경우.그리고 나서.select name,address
보다는select *
이 두 개의 열만 원하는 경우.
이렇게 보고 싶은 경우:
WORKPLACEID NAME ADDRESS TELEPHONE
----------- ---------- -------------- ---------
1 HSBC Nugegoda Road 43434
2 HNB Bank Colombo Road 223423
그런 다음 SQL Plus에서 다음과 같이 열 너비를 설정할 수 있습니다(예:).
column name format a10
column address format a20
column telephone format 999999999
필요에 따라서, 다음과 같이 행 사이즈와 페이지 사이즈를 지정할 수도 있습니다.
set linesize 100 pagesize 50
쿼리를 실행하기 전에 이러한 명령을 SQL Plus에 입력하여 이 작업을 수행합니다.또는 이러한 명령과 쿼리를 스크립트 파일(예: myscript)에 넣을 수 있습니다.sql과 실행해 주세요.예를 들어 다음과 같습니다.
column name format a10
column address format a20
column telephone format 999999999
select name, address, telephone
from mytable;
창 너비에 따라 줄 크기를 설정하고 다음 명령을 사용하여 줄 바꿈을 설정할 수 있습니다.
set linesize 160;
set wrap off;
160을 사용했는데 내 취향에 따라 다음 중 하나로 설정할 수 있습니다.100 - 200
랩을 설정하면 데이터가 표시되지 않고 데이터가 올바르게 표시됩니다.
sqlplus로 만든 덤프가 있고 이전에 누군가가 이 3개의 값을 설정하지 않아 출력이 흐트러진 경우, 빠져나갈 방법이 있습니다.
불과 몇 시간 전 DB 관리자가 sqlplus에서 실행된 보기 흉한 쿼리 출력을 전송했습니다(모르겠어요, 아마 저를 싫어할 수도 있어요...).나는 탈출구를 찾아야 했다: 이것은 적어도 읽기 쉽게 하기 위해 출력을 해석하는 awk 스크립트이다.완벽하진 않지만 제대로 닦을 시간이 없었어요.어쨌든, 그것은 꽤 일을 잘 한다.
awk ' function isDashed(ln){return ln ~ /^---+/};function addLn(){ln2=ln1; ln1=ln0;ln0=$0};function isLoaded(){return l==1||ln2!=""}; function printHeader(){hdr=hnames"\n"hdash;if(hdr!=lastHeader){lastHeader=hdr;print hdr};hnames="";hdash=""};function isHeaderFirstLn(){return isDashed(ln0) && !isDashed(ln1) && !isDashed(ln2) }; function isDataFirstLn(){return isDashed(ln2)&&!isDashed(ln1)&&!isDashed(ln0)} BEGIN{_d=1;h=1;hnames="";hdash="";val="";ln2="";ln1="";ln0="";fheadln=""} { addLn(); if(!isLoaded()){next}; l=1; if(h==1){if(!isDataFirstLn()){if(_d==0){hnames=hnames" "ln1;_d=1;}else{hdash=hdash" "ln1;_d=0}}else{_d=0;h=0;val=ln1;printHeader()}}else{if(!isHeaderFirstLn()){val=val" "ln1}else{print val;val="";_d=1;h=1;hnames=ln1}} }END{if(val!="")print val}'
다른 누군가가 이 스크립트를 개선하려고 하는 경우, 아래 변수는 다음과 같습니다: hnames -- 헤더에 있는 열 이름, hdash -- 헤더 아래에 있는 hdash -- 내가 현재 헤더를 해석하고 있는지 여부(==1), val -- hnames와 hdash 간에 스왑하기 위한 데이터, _d - - - lin0 - last line read, lin - lin - line read, lin - lin - lin - lin - lin - lin - lin - lin - lin - lin - lin - lin - line read (실제로 읽고 있습니다.with) ln2 - ln1보다 앞의 행 읽기
해피파싱!
아, 잊을 뻔했네...직접 sqlplus 출력을 예쁘게 하기 위해 사용합니다.
[oracle@ora ~]$ cat prettify_sql
set lines 256
set trimout on
set tab off
set pagesize 100
set colsep " | "
colsep은 옵션이지만 출력을 sqlite처럼 보이게 하기 때문에 스크립트를 사용하여 해석하기 쉬워집니다.
편집: 구문 분석된 출력과 구문 분석되지 않은 출력의 작은 미리 보기
아, 멍청한 선크기...내 profile.sql에서 수행하는 작업은 다음과 같습니다. UNIX에서만 작동합니다.
echo SET LINES $(tput cols) > $HOME/.login_tmp.sql
@$HOME/.login_tmp.sql
Windows 에서의 tput에 상당하는 것을 발견했을 경우는, Windows 에서도 동작할 가능성이 있습니다.
언급URL : https://stackoverflow.com/questions/3006431/how-to-display-table-data-more-clearly-in-oracle-sqlplus
'programing' 카테고리의 다른 글
Json을 반환하지만 원하지 않는 뒤로 슬래시 "\"를 포함합니다. (0) | 2023.02.23 |
---|---|
WooCommerce - URL에서 제품 및 제품 카테고리를 삭제하는 방법 (0) | 2023.02.23 |
문자열 배열에서 Orderby 필터를 작동시키는 방법은 무엇입니까? (0) | 2023.02.23 |
리액트JS에 표시되도록 div를 스크롤하려면 어떻게 해야 합니까? (0) | 2023.02.23 |
Spring-boot와 Spring-cloud의 호환성 매트릭스가 있습니까? (0) | 2023.02.23 |