Вопрос

Я запускаю oracle, и у меня есть запрос, который извлекает некоторые результаты из базы данных.Я хотел бы записать результаты в виде текстового файла.Как бы я это сделал?

Моим предпочтительным способом было бы использовать UTL_FILE .Есть ли у кого-нибудь пример того, как это сделать?

Это было полезно?

Решение

Если вы используете PL / SQL, то вы можете использовать пакет UTL_FILE, отличие от использования sql + spool заключается в том, что файлы записываются в файловую систему сервера.UTL_FILE имеет ряд ограничений, поэтому альтернативой на стороне сервера было бы использование хранимых процедур Java.

Другие советы

Если вы используете Sql Plus, это так же просто, как:

SQL> spool c:\temp\out.txt
SQL> SELECT * FROM USERS;
SQL> spool off

Эти три предложения выведут результат запроса "ВЫБРАТЬ * У ПОЛЬЗОВАТЕЛЕЙ" в файл c: emp\out.txt.

Вы можете отформатировать этот запрос, используя функции обработки строк Oracle.

Используйте UTL_FILE в сочетании с CREATE DIRECTORY для удобства сопоставления пути к каталогу с именем (он не создает фактический каталог, а только ссылку на него, поэтому убедитесь, что он создан первым)

пример


  create directory logfile as 'd:\logfile'; -- must have priv to do this

declare
  vFile utl_file.file_type;
begin
  vFile := utl_file.fopen(logfile ,'syslog','w'); -- w is write. This returns file handle
  utl_file.put(vFile,'Start Logfile'); -- note use of file handle vFile
  utl_file.fclose(vFile); -- note use of file handle vFile
end;

Если вы выполняете запрос из sqlplus вы можете использовать команду " спул":

spool /tmp/test.spool

После выполнения команды spool в рамках сеанса все выходные данные отправляются на консоль sqlplus, а также в текстовый файл /tmp/test.spool.

Это кажется разумным руководством с несколькими простыми примерами Пример UTL_FILE

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top