我正在运行 oracle 并有一个从数据库中提取一些结果的查询。我想将结果写成文本文件。我该怎么做呢?
我更喜欢的方式是使用 UTL_FILE。有人会有如何做到这一点的例子吗?
如果您使用的是 Sql Plus,那么简单如下:
SQL> 假脱机 c:\temp\out.txt SQL> 选择 * 从用户; SQL> 假脱机
这三句话会将查询“SELECT * FROM USERS”的结果输出到文件c:\temp\out.txt。
您可以使用 Oracle 的字符串操作函数来格式化此查询。
如果您使用的是 PL/SQL,那么您可以使用 UTL_FILE 包,与使用 sql+ spool 的区别在于文件被写入服务器文件系统。UTL_FILE 有许多限制,因此服务器端的替代方法是使用 Java 存储过程。
将 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 示例