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

ActiveRecordモデル属性をjsonからjsonbに移行するにはどうすればよいですか?

    移行は次のように記述します:

    def change
      reversible do |dir|
        dir.up { change_column :models, :attribute, 'jsonb USING CAST(attribute AS jsonb)' }
        dir.down { change_column :models, :attribute, 'json USING CAST(attribute AS json)' }
      end
    end
    

    これが他のソリューションとパフォーマンス面でどのように比較されるかはわかりませんが、120,000レコードのテーブルでこれをテストしました。各レコードには、4つのjsonがあります。 列とそのテーブルを移行するのに約1分かかりました。もちろん、それはjsonの複雑さに依存すると思います 構造はです。

    また、既存のレコードのデフォルト値が{}の場合も注意してください。 、上記のステートメントにdefault: {}を追加する必要があります 、それ以外の場合はjsonbがあるため 列ですが、デフォルト値は'{}'::jsonのままになります 。




    1. MariaDB LENGTHB()の説明

    2. MySQLで同じ重みのレコードをランク​​付けする方法

    3. MariaDBでのWEEKDAY()のしくみ

    4. 異種クエリでは、接続にANSI_NULLSおよびANSI_WARNINGSオプションを設定する必要があります。これにより、一貫したクエリセマンティクスが保証されます