sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur migrerar jag ett ActiveRecord-modellattribut från json till jsonb?

Jag skulle skriva migreringen så här:

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

Jag vet inte hur detta kan jämföras prestandamässigt med andra lösningar, men jag testade detta på en tabell med 120 000 poster, där varje post har fyra json kolumner och det tog mig ungefär en minut att migrera den tabellen. Naturligtvis antar jag att det beror på hur komplex json är struktur är.

Observera också att om dina befintliga poster har standardvärdet {} , måste du lägga till default: {} till ovanstående uttalanden , för annars har du jsonb kolumner, men standardvärdet förblir '{}'::json .




  1. Fel i Oracles lagrade procedur

  2. SQL:gruppera efter från annan tabell och invertera resultatet

  3. undvika samtidiga infoga flera samma id i mysql

  4. hur man får hela resultatuppsättningen från SSMS