我正在运行 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

这三句话将查询“SELECT * FROM USERS”的结果输出到文件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 命令:

spool /tmp/test.spool

在会话中执行 spool 命令后,所有输出都将发送到 sqlplus 控制台以及 /tmp/test.spool 文本文件。

这似乎是一个合理的教程,其中包含一些简单的示例 UTL_FILE 示例

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top