Вопрос
Я запускаю 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