PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Lấy kích thước của lobject trong PostgreSQL

Chức năng này đã đủ hiệu quả đối với tôi, bạn có thể muốn thử nó với dữ liệu của bạn:

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

Một tùy chọn khác là select sum(length(data)) from pg_largeobject where loid=the_oid nhưng nó yêu cầu quyền truy cập đọc đối với pg_largeobject mà tôi nghĩ đã bị chặn trong pg 9.0+ đối với những người không phải là superusers




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL nơi tất cả trong mảng

  2. số nguyên ngoài phạm vi và dung lượng đĩa còn lại quá nhỏ để chuyển đổi id thành bigint và các giải pháp khác

  3. Kiểm tra sự tồn tại của chỉ mục trong PostgreSQL

  4. Loại bỏ các sự kiện chồng chéo một phần / hoàn toàn có dấu thời gian bắt đầu và kết thúc trên nhiều giá trị

  5. Mệnh đề UPDATE-FROM trong jOOQ đưa ra giải thích cho trường CTE