2013-11-07 5 views
20

У меня есть пакетный файл, который запускает SQL скрипт в SQLPLUS и отправляет вывод в лог-файл:Как эхо текст во время выполнения сценария SQL в SQLPLUS

SQLPLUS пользователя/PW < RowCount.sql> RowCount .log

Мой лог-файл содержит следующее:

Connected to: 
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production 

SQL> SQL> 
    COUNT(*) 
---------- 
    0 

SQL> 
    COUNT(*) 
---------- 
    0 

и т.д., но это несколько тысяч строк вывода, и поэтому трудно определить, какие результаты б elong к которому утверждение.

Я хотел бы добавить некоторое форматирование в вывод, чтобы я мог различить, что произошло. Либо эхо исполняемого оператора, либо ручное вложение некоторых выражений «эхо» в скрипт было бы неплохо. В идеале это будет выглядеть примерно так:

SQL> select(*) from TableA; 
    COUNT(*) 
---------- 
    0 

SQL> select(*) from TableB; 
    COUNT(*) 
---------- 
    0 

ответ

19

Вы можете использовать SET ECHO ON в начале вашего скрипта, чтобы достичь этого, однако, вы должны указать свой скрипт, используя @ вместо < (также пришлось добавить EXIT на конец):

Test.sql

SET ECHO ON 

SELECT COUNT(1) FROM dual; 

SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual); 

EXIT 

терминал

sqlplus hr/[email protected] @/tmp/test.sql > /tmp/test.log 

test.log

SQL> 
SQL> SELECT COUNT(1) FROM dual; 

    COUNT(1) 
---------- 
    1 

SQL> 
SQL> SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual); 

    COUNT(1) 
---------- 
    2 

SQL> 
SQL> EXIT
31

подсказка команда эхо текст выхода:

prompt A useful comment. 
select(*) from TableA; 

Будет отображаться как:

SQL> A useful comment. 
SQL> 
    COUNT(*) 
---------- 
    0 
+2

Да, но это заставляет вас добавить это 'prompt' перед каждым запросом, который вы выполняете в своем скрипте. Во всяком случае, все еще возможное решение, +1. –

+0

Возможно, я должен был упомянуть о том, что я генерирую SQL-скрипт, поэтому для их создания требуется одна строка кода во время генерации. Но ваше решение, безусловно, чище и проще. – glenneroo

0

Вы можете изменить название столбца, поэтому вместо «COUNT (*)» у вас будет что-то значимое. Для этого вам придется обновить скрипт «RowCount.sql».

Например:

SQL> select count(*) as RecordCountFromTableOne from TableOne; 

Будет отображаться как:

RecordCountFromTableOne 
----------------------- 
      0 

Если вы хотите иметь место в названии, вы должны заключить его в двойные кавычки

SQL> select count(*) as "Record Count From Table One" from TableOne; 

Будет отображаться как:

Record Count From Table One 
--------------------------- 
      0 
Смежные вопросы