SQL*Plus中的丑陋格式

Ric*_*nop 17 sql oracle plsql sqlplus oracle10g

当我在SQL*Plus中运行select命令时,真的很烦人,例如:

SELECT * FROM books;
Run Code Online (Sandbox Code Playgroud)

输出格式错误且不可读(行单元格不在一行中,但由换行符等分隔):

在此输入图像描述

如何配置它以更好的方式显示SELECT结果?

编辑:

这是我的login.sql文件内容:

SET ECHO OFF
SET SERVEROUTPUT ON SIZE 1000000
SET PAGESIZE 999
SET LINESIZE 132
Run Code Online (Sandbox Code Playgroud)

EDIT2:

Affer增加了LINESIZE:

SET LINESIZE 32000
Run Code Online (Sandbox Code Playgroud)

它现在看起来像这样:

在此输入图像描述

a_h*_*ame 24

增加线条,例如 SET LINESIZE 32000

或使用SET WRAP OFF(但这会截断长值)

  • 如果你想使它永久化(即每次登录SQL*Plus),请将这些行添加到**$ ORACLE_HOME/sqlplus/admin**中的*glogin.sql*. (3认同)
  • @Richard Knop:我认为现在是时候更准确地定义问题的"更好的方式"了.:) (2认同)

APC*_*APC 11

SQL Plus是一个简单的命令行工具.它并不是真正适用于漂亮的报道.但是,它确实有一些格式化命令,这些命令在SQL Plus用户指南中有记录. 了解更多.

例如,您可以选择将TITLE列格式化为仅显示前20个字符,并完整显示SUMMARY列,如下所示:

COLUMN title FORMAT a20 TRUNCATED 
COLUMN summary FORMAT a4o WORD_WRAPPED
Run Code Online (Sandbox Code Playgroud)

这样,您可以更加整洁地查看您的查询,而无需在其投影中嵌入格式化命令.

或者,使用Quest的TOAD或Oracle自己的SQL Developer等IDE.这些工具包括一个查询浏览器,可以在更令人愉悦的网格中自动显示我们的查询结果.(可提供其他类似工具).


tbo*_*one 7

有些人可能不喜欢这个建议(我可以想到几个喜欢SqlPlus的DBA),但是你可能想要使用像ToadSQL Developer这样的IDE .如果你是Oracle的新手,sqlplus会让你觉得你刚刚跳回来!IMO,花时间学习Oracle,而不是SQLPlus.(哦,在您选择的IDE中玩游戏时阅读概念指南)


小智 7

制作一个像下面这样的脚本

#!/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!
Run Code Online (Sandbox Code Playgroud)

将脚本保存在一个文件中,即 sqlscript.sql 设置文件权限

chmode +x sqlscript.sql
Run Code Online (Sandbox Code Playgroud)

运行脚本和管道到 less 命令

./sqlscript.sql | less -S
Run Code Online (Sandbox Code Playgroud)

如果输出比终端中设置的列长,“S”选项将允许您使用箭头键滚动。

或者,您可以在您选择的文本编辑器中下载并打开 FILE="/tmp/queryResult.csv"。

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


Mic*_*ent 5

只需定义列宽,使其适合列的实际内容

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;
Run Code Online (Sandbox Code Playgroud)

这应该可以帮助您。


Boh*_*dan 5

这可以使输出更漂亮:

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 ' '
Run Code Online (Sandbox Code Playgroud)

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


lai*_*avi 5

CSV 风格,但干净:

SQL> set markup csv on
Run Code Online (Sandbox Code Playgroud)