sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLでlobjectのサイズを取得する

    この関数は私にとって十分に効率的でした。データで試してみることをお勧めします:

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

    別のオプションは、select sum(length(data)) from pg_largeobject where loid=the_oidです。 ただし、pg_largeobjectへの読み取りアクセスが必要です。これはスーパーユーザー以外の場合はpg9.0以降で抑制されていると思います




    1. Npgsqlで複数の通知をすぐに受信できない

    2. CanonicalFunctionEntityFunctions.TruncateTimeはMYSQLに存在しません

    3. mysql行が配列にないかどうかの確認

    4. mySQLでカスタムORDERBYオーダーを定義する方法