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

PostgreSQLのテキスト/バイト列を大きなオブジェクトに移行しますか?

    lo_from_byteaを使用してみませんか

    例:

    SELECT 'test'::text::bytea;
       bytea    
    ------------
     \x74657374
    (1 row)
    
    SELECT lo_from_bytea(0, 'test'::text::bytea);
     lo_from_bytea 
    ---------------
            274052
    (1 row)
    
    SELECT lo_get(274052);
       lo_get   
    ------------
     \x74657374
    (1 row)
    

    したがって、データをテキストからOIDに実際に移動するには(バックアップが必要です)、次の操作を実行できます。

    ALTER TABLE mytable ADD COLUMN value_lo OID;
    UPDATE mytable SET value_lo = lo_from_bytea(0, value::bytea), value = NULL;
    ALTER TABLE mytable DROP COLUMN value;
    ALTER TABLE mytable RENAME COLUMN value_lo TO value;
    

    ...そして最後に、PostgreSQLはMVCCデータベースであり、すべてのデータをすぐに削除するわけではないため、 VACUUM FULL または CLUSTER




    1. JSON_INSERT()–MySQLのJSONドキュメントに値を挿入します

    2. PHPのセッション変数に配列を格納する方法

    3. MySQL now()タイムゾーンを変更

    4. テーブルのフィールド名を返すSQLコマンドとは何ですか?