sql >> Databáze >  >> RDS >> PostgreSQL

Získání velikosti lobject v PostgreSQL

Tato funkce byla pro mě dostatečně účinná, možná ji budete chtít vyzkoušet s vašimi daty:

CREATE OR REPLACE FUNCTION lo_size(oid) RETURNS integer 
AS $$ 
declare 
 fd integer; 
 sz integer; 
begin 
 fd = lo_open($1, 262144);
 if (fd<0) then
   raise exception 'Failed to open large object %', $1;
 end if;
 sz=lo_lseek(fd,0,2);
 if (lo_close(fd)!=0) then
   raise exception 'Failed to close large object %', $1;
 end if;
 return sz;
end; 
$$ LANGUAGE 'plpgsql'; 

Další možností je select sum(length(data)) from pg_largeobject where loid=the_oid ale vyžaduje přístup pro čtení k pg_largeobject, který byl podle mého názoru v pg 9.0+ pro uživatele bez superuživatelů potlačený




  1. Důsledky nastavení hodnoty sloupce MySQL na NULL místo 0 nebo '' na místo na disku

  2. Součtová funkce párového pole?

  3. Jak se připojit k MySQL pomocí RIDE

  4. SQL Server ekvivalentní Oracle 'CONNECT BY PRIOR' a 'ORDER SIBLINGS BY'