簡體   English   中英

SQL*Plus 中的丑陋格式

[英]Ugly formatting in SQL*Plus

當我在 SQL*Plus 中運行 select 命令時,這真的很煩人,例如:

SELECT * FROM books;

輸出格式非常糟糕且無法讀取(行單元格不在一行中,而是由換行符等分隔):

在此處輸入圖片說明

如何配置它以更好的方式顯示 SELECT 結果?

編輯:

這是我的 login.sql 文件內容:

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

編輯2:

增加 LINESIZE:

SET LINESIZE 32000

現在看起來像這樣:

在此處輸入圖片說明

增加linesize,例如SET LINESIZE 32000

或使用SET WRAP OFF (但這會截斷長值)

SQL Plus 是一個簡單的命令行工具。 它並不是真正用於漂亮的報告。 但是,它確實有一些格式化命令,這些命令記錄在 SQL Plus 用戶指南中。 了解更多

例如,您可能會選擇將 TITLE 列格式化為僅顯示前 20 個字符,並像這樣完整顯示概要列:

COLUMN title FORMAT a20 TRUNCATED 
COLUMN summary FORMAT a4o WORD_WRAPPED

這將使您能夠更整齊地查看您的查詢,而無需在其投影中嵌入格式化命令。

或者,使用 IDE,例如 Quest 的 TOAD 或 Oracle 自己的 SQL Developer。 這些工具包括一個查詢瀏覽器,它會自動以更令人愉悅的網格顯示我們的查詢結果。 (其他類似工具可用)。

制作一個像下面這樣的腳本

#!/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

運行腳本和管道到 less 命令

./sqlscript.sql | less -S

如果輸出比終端中設置的列長,“S”選項將允許您使用箭頭鍵滾動。

或者,您可以在您選擇的文本編輯器中下載並打開 FILE="/tmp/queryResult.csv"。

根據您的要求調整 LINESIZE、NUMWIDTH、列字符大小 (a22)

有些人可能不喜歡這個建議(我可以想到一些喜歡 SqlPlus 的 DBA),但您可能想要使用像ToadSQL Developer這樣的 IDE。 如果您是 Oracle 的新手,sqlplus 會讓您感覺自己回到了過去! IMO,花時間學習 Oracle,而不是 SQLPlus。 (哦,在您選擇的 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

這對我有用:

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

除了所有這些答案:

set colsep "&TAB"

當 sqlplus 顯示如此多的破折號時,這意味着您的 linesize 過大。 至少比您的控制台大 -> 減小線寬,直到它適合控制台的寬度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM