sql >> Databasteknik >  >> RDS >> PostgreSQL

Få storleken på lobject i PostgreSQL

Den här funktionen har varit tillräckligt effektiv för mig, du kanske vill prova den med dina data:

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'; 

Ett annat alternativ är select sum(length(data)) from pg_largeobject where loid=the_oid men det kräver läsbehörighet till pg_largeobject som jag tror har undertryckts i pg 9.0+ för icke-superanvändare




  1. Hur man skapar pivottabell i PostgreSQL

  2. Hur skickar man en post till en PL/pgSQL-funktion?

  3. postgresql - lägg till boolesk kolumn till tabelluppsättningens standard

  4. Vad gör Ett allvarligt fel inträffade på det aktuella kommandot. Resultaten, om några, bör kasseras. SQL Azure fel betyder?