sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan migrerer jeg en ActiveRecord-modelattribut fra json til jsonb?

Jeg ville skrive migreringen på denne måde:

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

Jeg ved ikke, hvordan dette kan sammenlignes med andre løsninger, men jeg testede dette på en tabel med 120.000 poster, hvor hver post har fire json kolonner, og det tog mig omkring et minut at migrere den tabel. Det afhænger selvfølgelig af, hvor kompleks json er struktur er.

Bemærk også, at hvis dine eksisterende poster har en standardværdi på {} , skal du tilføje til ovenstående udsagn default: {} , for ellers har du jsonb kolonner, men standardværdien forbliver som '{}'::json .




  1. Efterfølgende blanktegn i varchar skal overvejes i sammenligning

  2. Transaktionsprioritet?

  3. Konfiguration af MySQL 8

  4. Brug to tabeller på én php-side (mysql)