W和' WB'的目的是什么?在Oracle File_Util中?

时间:2014-09-04 16:57:46

标签: sql oracle

我试图通过FILE_UTIL从Oracle生成excel文件。在Oracle文档中,他们给出了一些操作模式  W - 写  R - 阅读  WB -Write Byte RB - 读取字节

无法理解W和WB之间的区别。提前谢谢。

1 个答案:

答案 0 :(得分:0)

this似乎提到了您所指的文档,其中的内容比您在问题中所示的内容略多:

  

指定文件的打开方式。模式包括:

     
      
  • r - 阅读文字
  •   
  • w - 写文字
  •   
  • a - 附加文字
  •   
  • rb - 读取字节模式
  •   
  • wb - 写字节模式
  •   
  • ab - 追加字节模式
  •   

文档也says

  

byte_mode表示文件是作为二进制文件打开还是作为文本文件打开

因此b表示字节模式而不是文本模式。如果文件处于文本模式,则该文件作为字符流进行访问,因此该文件应在数据库字符集中进行编码,如该包的操作说明中所述。并且它在字节模式下作为二进制流进行访问。有些方法(例如get_line)会将以字节模式打开的文件引发异常作为“'行”。对二进制数据没有意义。

因此,您正在处理文本文件,该文件可以存储为CLOB,然后使用文本模式标记。如果您正在处理包含二进制数据(如图像或PDF)的文件(可以存储为BLOB),请使用字节模式标记。

Excel文件包含二进制数据,无论您有.xls还是.xlsx文件,因此您需要使用字节模式。如果您正在生成.csv文件,那么您可能需要文本模式。