¿Cómo agregar una columna SUPER a una tabla existente de AWS Redshift?
OBJETIVO
- Me gustaría agregar una columna SUPER Redshift a una tabla Redshift existente.
- Necesito que esta columna almacene datos JSON.
CÓDIGO
Así es como normalmente agregaría una nueva columna.
ALTER TABLE products
ADD COLUMN created_at NOT NULL;
1. Intentó
CREATE TABLE temp<em>test</em>persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
ALTER TABLE temp<em>test</em>persons ADD COLUMN newSuperColumn SUPER NOT NULL;
Error al ejecutar la consulta: ALTER TABLE ADD COLUMN definido como NOT NULL debe tener una expresión predeterminada no nula
Soluciones revisadas
- https://stackoverflow.com/questions/17101918/alter-column-data-type-in-amazon-redshift
- https://stackoverflow.com/questions/30377165/aws-redshift-add-identity-column-to-existing-table
- https://stackoverflow.com/questions/38309840/adding-column-to-existing-tables
- https://stackoverflow.com/questions/26417461/add-dynamic-column-to-existing-mysql-table
- https://stackoverflow.com/questions/55271239/sqlalchemy-how-to-add-column-to-existing-table
- https://stackoverflow.com/questions/5337182/adding-columns-to-an-existing-table
- https://stackoverflow.com/questions/63667701/add-column-to-existing-table-postgres
- https://stackoverflow.com/questions/28052368/how-to-add-not-null-unique-column-to-existing-table
- https://stackoverflow.com/questions/21284026/adding-columns-to-existing-csv-file-using-super-csv
- https://stackoverflow.com/questions/41143741/ucanaccess-add-column-to-existing-table
- https://stackoverflow.com/questions/54886271/adding-columns-to-existing-redshift-table
- https://stackoverflow.com/questions/58553497/how-to-add-column-to-existing-table-in-laravel
- https://stackoverflow.com/questions/63394107/add-column-to-existing-table-in-rds
- https://stackoverflow.com/questions/46194442/oracle-add-column-to-existing-table
davy.ai
Solución
Después de revisar posibles soluciones, descubrí que la sintaxis correcta para agregar una supercolumna en Redshift es la siguiente:
Sin embargo, cuando la supercolumna se define como NOT NULL, debe tener una expresión de valor predeterminado que no sea nula, la cual se puede establecer como:
Por lo tanto, para agregar una supercolumna de Redshift a una tabla existente y almacenar datos JSON, el código se verá así:
Esto agregará una nueva columna llamada columna_json a una tabla existente llamada tabla_existente, y solo aceptará valores JSON y no puede ser nula. En casos en que la columna esté vacía, se le asignará un valor predeterminado de ‘{}’.