PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przeprowadzić migrację atrybutu modelu ActiveRecord z json do jsonb?

Napisałbym migrację w ten sposób:

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

Nie wiem, jak to ma się w porównaniu z innymi rozwiązaniami pod względem wydajności, ale przetestowałem to na tabeli ze 120 000 rekordów, z których każdy ma cztery json kolumny i migracja tej tabeli zajęła mi około minuty. Oczywiście myślę, że to zależy od tego, jak złożony jest json struktura jest.

Zauważ też, że jeśli Twoje istniejące rekordy mają domyślną wartość {} , musisz dodać do powyższych instrukcji default: {} , bo inaczej będziesz miał jsonb kolumn, ale wartość domyślna pozostanie jako '{}'::json .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz json z wartościami kolumn jako kluczami obiektów

  2. Czy kolejność tabel w złączeniu ma znaczenie, gdy używane są złączenia LEWE (zewnętrzne)?

  3. PostgreSQL:Usuń parę klucz/wartość z tablicy z obiektami json

  4. Jak przenieść moją istniejącą aplikację rails na heroku? (sqlite do postgresa)

  5. Wskazówki dotyczące monitorowania PostgreSQL dla Moodle