PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để di chuyển thuộc tính mô hình ActiveRecord từ json sang jsonb?

Tôi sẽ viết quá trình di chuyển theo cách này:

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

Tôi không biết làm thế nào điều này so sánh hiệu suất khôn ngoan với các giải pháp khác, nhưng tôi đã thử nghiệm điều này trên một bảng có 120.000 bản ghi, mỗi bản ghi có bốn json và tôi mất khoảng một phút để di chuyển bảng đó. Tất nhiên, tôi đoán nó phụ thuộc vào mức độ phức tạp của json cấu trúc là.

Ngoài ra, hãy lưu ý rằng nếu các bản ghi hiện có của bạn có giá trị mặc định là {} , bạn phải thêm vào các câu lệnh trên default: {} , bởi vì nếu không, bạn sẽ có jsonb nhưng giá trị mặc định sẽ vẫn là '{}'::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. LỖI:các ràng buộc không thỏa mãn khi cài đặt PostGIS trên hình ảnh Alpine Docker

  2. Postgres where mệnh đề so sánh dấu thời gian

  3. Cách tính trung bình điểm đánh giá sản phẩm bằng cách sử dụng activerecord và POSTGRES

  4. Tài nguyên đào tạo &học tập hàng đầu về PostgreSQL

  5. Cách cấp tất cả các đặc quyền về chế độ xem cho người dùng tùy ý