2014-11-06 4 views
1

я делаю экспорт, используя SQL * Plus, используя следующий код:удалить начальные пробелы и SQL> теги когда подкачкой

Set echo off 
Set verify off 
Set feedback off 
Set heading off 
Set termout on 
Set pages 50000 
Set linesize 1000 
Set newpage none 
Set colsep "," 
spool Z:\ff\ss.csv 
Select Client_ID, Cust_ID from cust; 
spool off; 
exit; 

Я получаю правильный вывод, но он не имеет лучшее форматирование.

SQL> Select Client_ID, Cust_ID from cust; 
     100,200 
     200,300 
     300,400 
     400,500 
SQL>spool off; 
  1. Как я могу избавиться от пробелов до значений?

    100.200

  2. Как я могу избавиться от SQL> заявления в выходном файле?

ответ

1

echo off работает только для удаления приглашений SQL> при запуске из файла. Поместите ваши команды в файл с именем export_client_data.sql и запустить их с помощью команды @:

SQL>@export_client_data.sql 

SQL * Plus, являясь инструментом отчетности, будет формат вывода в ширину столбцов, как это определено в таблице. Из-за этого использование TRIM() не всегда работает должным образом. Вы увидите столбец VARCHAR, например, справа от ширины.

Обычно для создания экстракта с помощью SQL * Plus вы форматировать запрос, как это и не нужно, чтобы TRIM ничего:

Select Client_ID || ',' || Cust_ID from cust; 
+0

Лучше использовать опцию 'silent'. –

0

Общие, не Oracle Ответ:

  1. Использование ISO/ANSI SQL функции TRIM(Client_ID) удалить ведущие (и завершающие) пробелы. (Некоторые СУБД используют LTRIM для ведущих.)

  2. Нестандартная функция ЗАМЕНИТЬ может работать, то есть REPLACE(Client_ID, 'SQL> ', '').

0

Как я могу избавиться от пробелов до значений?

Использование TRIM. Например,

SQL> SELECT TRIM(empno) eno FROM emp; 

ENO 
------------------------------------- 
7369 
7499 
7521 
7566 
7654 
7698 
7782 
7788 
7839 
7844 
7876 
7900 
7902 
7934 

14 rows selected. 

SQL> 

Как я могу избавиться от SQL> операторов в выходном файле?

Лучший способ заключается в использовании опции -sSILENT.

Например,

sqlplus -s scott/[email protected] 

documentation С,

SILENT Опция

-S [ILENT]

Подавляет все SQL*Plus информацию и оперативные сообщения, в том числе в командной строке , эхо команд и баннер обычно отображается при запуске SQL*Plus. Если вы опускаете имя пользователя или пароль , SQL*Plus запрашивает их, но подсказки не видны! Используйте SILENT для вызова SQL*Plus в рамках другой программы, так что использование пользователя из SQL*Plus является невидимым для пользователя.

SILENT - полезный режим для создания отчетов для Интернета с использованием команды SQLPLUS -MARKUP внутри сценария CGI или операционной системы . Баннер и подсказки SQL*Plus подавляются и не отображаются в отчетах, созданных с использованием параметра SILENT.

Кроме того, вы также можете сделать:

set sqlprompt '' 

Например,

SQL> set sqlprompt '' 
select empno from emp; 

    EMPNO 
---------- 
     7369 
     7499 
     7521 
     7566 
     7654 
     7698 
     7782 
     7788 
     7839 
     7844 
     7876 
     7900 
     7902 
     7934 

14 rows selected. 

Итак, SQL> подсказка игнорируется.