sql >> Databáze >  >> RDS >> PostgreSQL

Jak mohu migrovat atribut modelu ActiveRecord z json na jsonb?

Migraci bych napsal takto:

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

Nevím, jak se to srovnává z hlediska výkonu s jinými řešeními, ale testoval jsem to na tabulce se 120 000 záznamy, z nichž každý má čtyři json sloupce a migrace této tabulky mi trvala asi minutu. Samozřejmě, myslím, že záleží na tom, jak složitý je json struktura je.

Všimněte si také, že pokud mají vaše stávající záznamy výchozí hodnotu {} , musíte k výše uvedeným příkazům přidat default: {} , protože jinak budete mít jsonb sloupců, ale výchozí hodnota zůstane '{}'::json .




  1. Rozdíl mezi Oracle Instant Client a Oracle Client

  2. Zpomalení rychlosti vkládání, jak tabulka roste v mysql

  3. Jak zobrazit indexy pro databázi nebo tabulku v MySQL?

  4. MySQL pro Qt na Macu