Можно ли убрать кучу повторяющей информации в SQL*Plus консоли?
Возможно ли, когда выводишь информацию в консоли убрать повторяющиеся имена колонок и черточек (--) после каждого вывода информации столбца?
Или лучше уже использовать SQL Developer для большого количества строк?
Пример, что мне выдает при выводе информации о пользователе (инф. которую я попытался получить в консоли взял в такие вот звездочки для Вашего лучшего просмотра (****)):
EMPLOYEE_ID
-----------
FIRST_NAME
--------------------------------------------------------------------------------
LAST_NAME
--------------------------------------------------------------------------------
EMAIL
--------------------------------------------------------------------------------
PHONE HIRE_DATE MANAGER_ID
-------------------------------------------------- --------- ----------
JOB_TITLE
--------------------------------------------------------------------------------
**98**
EMPLOYEE_ID
-----------
FIRST_NAME
--------------------------------------------------------------------------------
LAST_NAME
--------------------------------------------------------------------------------
EMAIL
--------------------------------------------------------------------------------
PHONE HIRE_DATE MANAGER_ID
-------------------------------------------------- --------- ----------
JOB_TITLE
--------------------------------------------------------------------------------
**Amber**
EMPLOYEE_ID
-----------
FIRST_NAME
--------------------------------------------------------------------------------
LAST_NAME
--------------------------------------------------------------------------------
EMAIL
--------------------------------------------------------------------------------
PHONE HIRE_DATE MANAGER_ID
-------------------------------------------------- --------- ----------
JOB_TITLE
--------------------------------------------------------------------------------
**Rose**
EMPLOYEE_ID
-----------
FIRST_NAME
--------------------------------------------------------------------------------
LAST_NAME
--------------------------------------------------------------------------------
EMAIL
--------------------------------------------------------------------------------
PHONE HIRE_DATE MANAGER_ID
-------------------------------------------------- --------- ----------
JOB_TITLE
--------------------------------------------------------------------------------
**[email protected]**
EMPLOYEE_ID
-----------
FIRST_NAME
--------------------------------------------------------------------------------
LAST_NAME
--------------------------------------------------------------------------------
EMAIL
--------------------------------------------------------------------------------
PHONE HIRE_DATE MANAGER_ID
-------------------------------------------------- --------- ----------
JOB_TITLE
--------------------------------------------------------------------------------
**650.507.9822 23-MAY-16 25**
EMPLOYEE_ID
-----------
FIRST_NAME
--------------------------------------------------------------------------------
LAST_NAME
--------------------------------------------------------------------------------
EMAIL
--------------------------------------------------------------------------------
PHONE HIRE_DATE MANAGER_ID
-------------------------------------------------- --------- ----------
JOB_TITLE
--------------------------------------------------------------------------------
**Shipping Clerk**
EMPLOYEE_ID
-----------
FIRST_NAME
--------------------------------------------------------------------------------
LAST_NAME
--------------------------------------------------------------------------------
EMAIL
--------------------------------------------------------------------------------
PHONE HIRE_DATE MANAGER_ID
-------------------------------------------------- --------- ----------
JOB_TITLE
--------------------------------------------------------------------------------
UPD вывода:
SQL> set lines 999 pages 100
SQL> select * from employees fetch next 10 rows only;
EMPLOYEE_ID FIRST_NAME
LAST_NAME
EMAIL
PHONE
HIRE_DATE MANAGER_ID
----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- --------- ----------
JOB_TITLE
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
98 Amber
Rose
[email protected]
650.507.9822 23-MAY-16 25
Shipping Clerk
99 Bella
Stone
[email protected]
650.507.9833 21-JUN-16 25
Shipping Clerk
100 Thea
Hawkins
[email protected]
650.5
Ответы (2 шт):
Можно. Так сразу после подключения:
SQL> select * from hr.employees fetch first 10 rows only;
EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- -------------------- -------------------------
EMAIL PHONE_NUMBER HIRE_DATE JOB_ID SALARY
------------------------- -------------------- --------- ---------- ----------
COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
-------------- ---------- -------------
100 Steven King
SKING 515.123.4567 17-JUN-03 AD_PRES 24000
90
[... и так ещё 9 строк]
С указанием допустимой длины строки и страницы будет несколько лучше:
SQL> set lines 999 pages 100
SQL> /
EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- --------- ---------- ---------- -------------- ---------- -------------
100 Steven King SKING 515.123.4567 17-JUN-03 AD_PRES 24000 90
101 Neena Kochhar NKOCHHAR 515.123.4568 21-SEP-05 AD_VP 17000 100 90
102 Lex De Haan LDEHAAN 515.123.4569 13-JAN-01 AD_VP 17000 100 90
[... ещё 7 строк]
10 rows selected.
Разумеется, можно указывать имена нужных колонок вместо select *.
SQL*Plus не подсчитывает динамически фактическую длину значений символьных колонок, а берёт их макс. длину из метаданных. Никакой опции, чтобы ограничить ширину отображения для всех символных столбцов нет.
Макс. длина символьных столбцов в таблице из вопроса - 255 символов. Чтобы задать приемлимую ширину их отображения, то надо выполнить команду COL[UMN] для всех столбцов в листе запроса. Например:
SQL> create table emp as
select cast ('name' as varchar2 (255)) name, cast ('memo' as varchar2 (255)) memo
from dual
/
SQL> select * from emp
/
NAME MEMO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
name memo
SQL> col name for a8
SQL> col memo for a8
SQL> /
NAME MEMO
-------- --------
name memo
Или лучше уже использовать SQL Developer для большого количества строк?
SQL*Plus подходит для администрирования, запуска скриптов, несложных однострочных запросов. Но для разработки он не совсем подходит, т.к. набрать в нём сложный запрос для того, чтобы выполнить его один-два раза, довольно непросто. На смену ему Oracle готовит SQLcl, который поставляется в коробке, $ORACLE_HOME/sqldeveloper/sqldeveloper/README.md:
Oracle SQL Developer Command Line (SQLcl) is a free command line interface for Oracle Database.
It allows you to interactively or batch execute SQL and PL/SQL.
SQLcl provides in-line editing, statement completion, and command recall for a feature-rich experience, all while also supporting your previously written SQL*Plus scripts.
Простым языком, SQLcl это SQL Developer без GUI, который полностью совместим с SQL*Plus.
В нём проблемы с отображением длинных символьных столбцов не будет:
The ansiconsole option formats and resizes data according to the column widths, for easier readability.
$ sql iam/iam@server/pdb1
SQLcl: Release 19.4 Production on Sun Aug 02 15:40:55 2020
SQL> desc emp
Name Null? Typ
---- ----- --------------
NAME VARCHAR2(2000)
MEMO VARCHAR2(2000)
SQL> select * from emp;
NAME
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MEMO
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
name
memo
SQL> set sqlformat ansiconsole
SQL> /
/
NAME MEMO
_______ _______
name memo
Или визуально:
