2015-03-19 4 views
2

С помощью инструмента SQL я хочу создать текстовый файл с записями VARCHAR.SQL Plus SP2-0606

Использование SQL Developer Я успешно создал выходной текстовый файл, вызвав скрипт. Но, основываясь на моих исследованиях, команда TRIMSPOOl в настоящее время не поддерживается SQL Developer, что делает мои выходные данные имеющими конечные пробелы.

Вот код в скрипте:

 
    spool on 
    set echo off 
    set verify off 
    set feedback off 
    set heading off 
    set trimspool on 
    set termout off 
    spool C:\SQLFiles\Output.txt; 
    select cust_name || cust_addr as Cust_Details 
    from customer_db; 
    spool off; 

теперь у меня есть SQL Plus 11g, и я пытаюсь запустить скрипт, который я создал в SQL Developer. Я получаю сообщение об ошибке SP2-0606:

 
    SP2-0606: Cannot create SPOOL file "on.LST: 

Основываясь на проведенном мной исследовании, это из-за команды Spool, и я не имею права доступа к папке по умолчанию? ..

Не могли бы вы помочь в настройке, которую я должен изменить, чтобы сделать желаемый результат в SQL Plus.

+0

Привет, разделяя решение, которое я сделал. Я просто удаляю строку для 'spool on'. –

ответ

3

Вы должны поместить имя файла в двойные кавычки - я думаю, что SQLPlus использует escape-последовательности C-стиля, придавая обратную косую черту \ особое значение. Кроме того, вы должны удалить точку с запятой ';':

Так что если вы замените

spool C:\SQLFiles\Output.txt; 

с

spool "C:\SQLFiles\Output.txt" 

он должен работать, как ожидалось (если C: \ SQLFiles существует и доступна для записи ваш счет).

UPDATE

Как @LalitKumarB отметил, золотник отлично работает без двойных кавычек. Реальная проблема заключается в другом:

spool on 

Это говорит SQLPlus, чтобы создать выходной файл on в текущем каталоге. Поэтому вы получите это сообщение об ошибке, если у вас нет доступа к каталогу, из которого вы запускаете SQLPlus.

+0

Я так не думаю. SPOOL будет работать, как ожидалось, без двойных кавычек. Я думаю, проблема связана с каталогом, который он использует. –

1

Из документов,

SP2-0606 Невозможно создать файл имя_файла

Причина: Команда STORE не смог создать указанный файл. Может быть недостаточно места на диске, слишком много открытых файлов или защита только для чтения в выходном каталоге.

Действие: Убедитесь, что на диске достаточно места и что защита в каталоге позволяет создавать файлы.

В нашем тестовом примере нет ничего плохого в команде spool. Я не думаю, что есть необходимость в котировках вообще.

Например,

Клиент: 12с

ОС: Windows 7

SQL> spool D:\text.txt 
SQL> select ename||to_char(empno) from emp; 

ENAME||TO_CHAR(EMPNO) 
-------------------------------------------------- 
SMITH7369 
ALLEN7499 
WARD7521 
JONES7566 
MARTIN7654 
BLAKE7698 
CLARK7782 
SCOTT7788 
KING7839 
TURNER7844 
ADAMS7876 

ENAME||TO_CHAR(EMPNO) 
-------------------------------------------------- 
JAMES7900 
FORD7902 
MILLER7934 

14 rows selected. 

SQL> spool off; 

И файл шпуля выглядит следующим образом:

enter image description here

Таким образом, он работает без каких-либо двойных кавычек. Думаю, вам нужно действительно посмотреть на каталог, который вы используете, для катушки.

1

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