PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara memigrasikan atribut model ActiveRecord dari json ke jsonb?

Saya akan menulis migrasi dengan cara ini:

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

Saya tidak tahu bagaimana ini membandingkan kinerja dengan solusi lain, tetapi saya menguji ini pada tabel dengan 120.000 catatan, setiap catatan memiliki empat json kolom dan saya butuh sekitar satu menit untuk memigrasi tabel itu. Tentu saja, saya kira itu tergantung pada seberapa kompleks json struktur adalah.

Juga, perhatikan bahwa jika catatan Anda yang ada memiliki nilai default {} , Anda harus menambahkan ke pernyataan di atas default: {} , karena jika tidak, Anda akan memiliki jsonb kolom, tetapi nilai default akan tetap sebagai '{}'::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. Bagaimana cara menanyakan array bersarang di kolom postgres json?

  2. Simpan dan indeks YAML dengan PostgreSQL, dengan Javascript lib atau fungsi yang dapat digunakan kembali?

  3. menyapu dibatalkan! Permata::LoadError:Ditentukan 'postgresql' untuk adaptor database

  4. SqlAlchemy (Postgres + Flask ):Bagaimana cara menjumlahkan banyak kolom?

  5. Grup zona waktu RoR Postgresql dengan tidak bekerja di Heroku