Oracle PL/SQL UTL_FILE.PUT 缓冲

标签 oracle plsql put fflush utl-file

我正在从 Oracle 存储过程写入一个大于 7MB 的大文件,并且要求在每条记录的末尾没有行终止字符(没有回车/换行)。

我已经使用 UTL_FILE.PUT 编写了一个存储过程,并且我正在使用 UTL_FILE.FFLUSH 跟踪对 UTL_FILE.PUT 的每次调用。尽管我正在进行 FFLUSH 调用,但一旦我达到写入超过缓冲区大小(设置为最大 32767)的程度,此过程就会出现写入错误。如果我用 PUT_LINE 调用替换 PUT 调用,该过程工作正常。

如果没有换行符,是否不能写入超过缓冲区大小的内容?如果是这样,是否有解决方法?

最佳答案

达斯汀,

此处的 Oracle 文档:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_file.htm#i1003404

指出:
FFLUSH 将挂起的数据物理写入由文件句柄标识的文件。通常,写入文件的数据会被缓冲。 FFLUSH 过程强制将缓冲的数据写入文件。数据必须以换行符结束。

最后一句最为中肯。

在搜索结果文件中的行终止符并删除它们之前,您不能使用 UTL_FILE.PUT_LINE 写入数据吗?

只是一个想法....

关于Oracle PL/SQL UTL_FILE.PUT 缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7206312/

相关文章:

mysql - 将数据从一个表插入到另一个表但不需要主 ID

sharepoint - .NET Sharepoint 创建目录

oracle - 如何修复在oracle过程中调用API时出现 "HTTP request failed"错误?

database - Oracle 使用代理模式创建数据库链接

oracle - Oracle pl/sql 的 ORM

oracle - Oracle SQL 中是否有 HTF.ESCAPE_SC 的内置反函数?

oracle - 使用名称的字符串表示调用 PLSQL 存储过程

SQL-Oracle 使用 LAG() 从自身更新表

java - 如何在浏览器中发出 POST API 请求?

javascript - Axios 'put' 请求将数组作为空值传递