Oracle写入文件

时间:2020-03-05 18:43:10  来源:igfitidea点击:

我正在运行oracle并有一个查询,该查询从数据库中提取了一些结果。我想将结果写为文本文件。我将如何去做呢?

我更喜欢的方式是使用UTL_FILE。有人会举一个例子吗?

解决方案

回答

如果我们正在从sqlplus运行查询,则可以使用spool命令:

spool /tmp/test.spool

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

回答

如果我们使用的是Sql Plus,则非常简单:

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

这三个句子会将查询结果" SELECT * FROM USERS"输出到文件c:\ temp \ out.txt。

我们可以使用Oracle的字符串操作功能来格式化此查询。

回答

如果使用的是PL / SQL,则可以使用UTL_FILE包,与使用sql +假脱机的区别在于,文件已写入服务器文件系统。 UTL_FILE具有许多限制,因此服务器端的另一种选择是使用Java存储过程。

回答

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

回答

结合使用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;