PostgreSQL
 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 записа, като всеки запис има четири json колони и ми отне около минута да мигрирам тази таблица. Разбира се, предполагам, че зависи от това колко сложен е json структура е.

Освен това забележете, че ако вашите съществуващи записи имат стойност по подразбиране {} , трябва да добавите към горните изрази default: {} , защото в противен случай ще имате jsonb колони, но стойността по подразбиране ще остане като '{}'::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. Drop колона не премахва препратките към колони изцяло - postgresql

  2. Как да извикам PostgreSQL процедура в Java?

  3. Изберете Заявка, за да проверите и двете, или едното, или условието

  4. Как да се свържете към PostgreSQL сървър чрез JDBC в Android?

  5. създаване на EJB доставчик javax.persistence.PersistenceContext.synchronization()Ljavax/persistence/SynchronizationType