type json_populate_record guardar example ejemplo postgresql jsonb

json_populate_record - ¿Actualizar la columna PostgreSQL JSON a JSONB?



postgresql json type (2)

Después de actualizar a PostgreSQL 9.4, ¿cómo convierto todas mis columnas JSON en columnas JSONB?

No me importa perder claves duplicadas y espacios en blanco.


En el contexto de Rails, aquí hay una alternativa de migración ActiveRecord:

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

Probé esto en una tabla con 120 000 registros, cada registro tenía cuatro columnas json y me llevó aproximadamente un minuto migrar esa tabla. Por supuesto, depende de cuán compleja sea la estructura de json .

Además, tenga en cuenta que si sus registros existentes tienen un valor predeterminado de {} , debe agregarlos a las declaraciones anteriores de default: {} , porque de lo contrario tendrá columnas jsonb , pero el valor predeterminado permanecerá como ''{}''::json .


ALTER TABLE t ALTER COLUMN j TYPE jsonb USING j::text::jsonb;