如何在oracle中获取文件大小或对象大小

时间:2016-02-24 16:31:07

标签: plsql oracle11g

我有一个表在表中包含三列ID,Obj_name,Object。对象是指位于文件夹中的元数据/文件。如何编写脚本来检查每个对象的文件大小。

输出如

ID,Obj_name,对象,FILE_SIZE。

让我知道是否有任何想法。

2 个答案:

答案 0 :(得分:2)

试试这个:

 DECLARE
 v_fexists      BOOLEAN;
 v_file_length  NUMBER;
 v_block_size   BINARY_INTEGER;
 BEGIN
  UTL_FILE.FGETATTR
     ('NFS_DIR', 'west.txt', v_fexists, v_file_length, 

 v_block_size);
  DBMS_OUTPUT.PUT_LINE (v_file_length);
END;

答案 1 :(得分:0)

由于objectbfile,您可以执行类似

的操作
CREATE OR REPLACE FUNCTION( p_id IN INTEGER )
  RETURN INTEGER
IS
  l_bfile  bfile;
  l_length integer;
BEGIN
  SELECT object
    INTO l_bfile
    FROM your_table
   WHERE id = p_id;

  DBMS_LOB.OPEN(l_bfile, DBMS_LOB.LOB_READONLY);
  /* Get the length of the LOB: */
  l_length := DBMS_LOB.GETLENGTH(l_bfile);
  DBMS_LOB.CLOSE(l_bfile);

  RETURN l_length;
END;

然后从您的查询中调用该函数传入id。请注意,此示例直接取自documentation on LOBs