ALTER TABLE - Amazon Redshift

ALTER TABLE

Este comando cambia la definición de una tabla de Amazon Redshift o de una tabla externa de Amazon Redshift Spectrum. Este comando actualiza los valores y las propiedades establecidos por CREATE TABLE o CREATE EXTERNAL TABLE.

No puede ejecutar ALTER TABLE en una tabla externa dentro de un bloque de transacción (BEGIN … END). Para obtener más información acerca de las transacciones, consulte Aislamiento serializable.

ALTER TABLE bloquea la tabla para operaciones de lectura y escritura hasta que se complete la transacción que incluye la operación ALTER TABLE, a menos que en la documentación se indique específicamente que se pueden realizar consultas de datos u otras operaciones en la tabla mientras se la modifica.

Privilegios necesarios

El usuario que modifica una tabla necesita el privilegio adecuado para que el comando se ejecute correctamente. Según el comando ALTER TABLE, se requiere uno de los siguientes privilegios.

  • Superusuario

  • Usuarios con el privilegio ALTER TABLE

  • Propietario de la tabla con el privilegio USAGE en el esquema

Sintaxis

ALTER TABLE table_name { ADD table_constraint | DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] | OWNER TO new_owner | RENAME TO new_name | RENAME COLUMN column_name TO new_name | ALTER COLUMN column_name TYPE updated_varchar_data_type_size | ALTER COLUMN column_name ENCODE new_encode_type | ALTER COLUMN column_name ENCODE encode_type, | ALTER COLUMN column_name ENCODE encode_type, .....; | ALTER DISTKEY column_name | ALTER DISTSTYLE ALL | ALTER DISTSTYLE EVEN | ALTER DISTSTYLE KEY DISTKEY column_name | ALTER DISTSTYLE AUTO | ALTER [COMPOUND] SORTKEY ( column_name [,...] ) | ALTER SORTKEY AUTO | ALTER SORTKEY NONE | ALTER ENCODE AUTO | ADD [ COLUMN ] column_name column_type [ DEFAULT default_expr ] [ ENCODE encoding ] [ NOT NULL | NULL ] [ COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE } ] | | DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] | ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ] | MASKING { ON | OFF } FOR DATASHARES } where table_constraint is: [ CONSTRAINT constraint_name ] { UNIQUE ( column_name [, ... ] ) | PRIMARY KEY ( column_name [, ... ] ) | FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ]} The following options apply only to external tables: SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' } | SET FILE FORMAT format | | SET TABLE PROPERTIES ('property_name'='property_value') | PARTITION ( partition_column=partition_value [, ...] ) SET LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } | ADD [IF NOT EXISTS] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } [, ... ] | DROP PARTITION ( partition_column=partition_value [, ...] )

Para reducir el tiempo de ejecución del comando ALTER TABLE, puede combinar algunas cláusulas del comando ALTER TABLE.

Amazon Redshift admite las siguientes combinaciones de las cláusulas ALTER TABLE:

ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTKEY column_Id; ALTER TABLE tablename ALTER DISTKEY column_Id, ALTER SORTKEY (column_list); ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTSTYLE ALL; ALTER TABLE tablename ALTER DISTSTYLE ALL, ALTER SORTKEY (column_list);

Parámetros

table_name

El nombre de la tabla que se modificará. Especifique solo el nombre de la tabla o use el formato nombre_de_esquema.nombre_de_tabla para usar un esquema específico. Las tablas externas deben estar clasificadas por el nombre de un esquema externo. También puede especificar un nombre de vista si está utilizando la instrucción ALTER TABLE para cambiar el nombre de una vista o cambiar su propietario. La longitud máxima del nombre de la tabla es de 127 bytes; los nombres más largos se truncan en 127 bytes. Puede usar caracteres multibyte UTF-8 de hasta un máximo de cuatro bytes. Para obtener más información acerca de los nombres válidos, consulte Nombres e identificadores.

ADD table_constraint

Una cláusula que agrega la restricción especificada a la tabla. Para obtener descripciones de los valores table_constraint válidos, consulte CREATE TABLE.

nota

No se puede agregar una restricción de clave principal a una columna que se puede anular. Si la columna se creó originalmente con la restricción NOT NULL, puede agregar la restricción de clave principal.

DROP CONSTRAINT constraint_name

Una cláusula que elimina la restricción mencionada de la tabla. Para eliminar una restricción, especifique el nombre de la restricción, no el tipo de restricción. Para ver los nombres de restricciones de la tabla, ejecute la siguiente consulta.

select constraint_name, constraint_type from information_schema.table_constraints;
RESTRICT

Una cláusula que elimina solo la restricción especificada. RESTRICT es una opción para DROP CONSTRAINT. RESTRICT no puede utilizarse con CASCADE.

CASCADE

Una cláusula que elimina la restricción especificada y todos los elementos que dependen de esa restricción. CASCADE es una opción para DROP CONSTRAINT. CASCADE no puede utilizarse con RESTRICT.

OWNER TO new_owner

Cláusula que cambia el propietario de la tabla (o la vista) al valor new_owner.

RENAME TO new_name

Cláusula que cambia el nombre de una tabla (o una vista) al valor especificado en new_name. La longitud máxima del nombre de la tabla es de 127 bytes; los nombres más largos se truncan en 127 bytes.

No se puede cambiar el nombre de una tabla permanente a un nombre que comienza por "#". El nombre de una tabla que comienza con "#" indica una tabla temporal.

No se puede cambiar el nombre de una tabla externa.

ALTER COLUMN nombre_de_columna TYPE tamaño_de_tipo_de_datos_varchar_actualizado

Una cláusula que cambia el tamaño de una columna definida como un tipo de datos VARCHAR. Esta cláusula solo admite la modificación del tamaño de un tipo de datos VARCHAR. Tenga en cuenta las siguientes restricciones:

  • No puede modificar una columna con codificaciones de compresión BYTEDICT, RUNLENGTH, TEXT255 o TEXT32K.

  • No puede disminuir el tamaño por debajo del tamaño máximo de los datos existentes.

  • No puede modificar columnas con valores predeterminados.

  • No puede modificar columnas con UNIQUE, PRIMARY KEY o FOREIGN KEY.

  • No puede modificar las columnas dentro de un bloque de transacción (BEGIN … END) Para obtener más información acerca de las transacciones, consulte Aislamiento serializable.

ALTER COLUMN column_name ENCODE new_encode_type

Se trata de una cláusula que cambia la codificación de compresión de una columna. Si especifica la codificación de compresión para una columna, la tabla ya no se establece en ENCODE AUTO. Para obtener información acerca de la codificación de compresión, consulte Compresión de columnas para reducir el tamaño de los datos almacenados.

Cuando se cambia la codificación de compresión de una columna, la tabla sigue disponible para realizar consultas.

Tenga en cuenta las siguientes restricciones:

  • No puede modificar una columna para que tenga la misma codificación que la definida actualmente.

  • No puede modificar la codificación de una columna en una tabla con una clave de ordenación intercalada.

ALTER COLUMN column_name ENCODE encode_type, ALTER COLUMN column_name ENCODE encode_type, .....;

Se trata de una cláusula que modifica la codificación de compresión de varias columnas en un solo comando. Para obtener información acerca de la codificación de compresión, consulte Compresión de columnas para reducir el tamaño de los datos almacenados.

Cuando se cambia la codificación de compresión de una columna, la tabla sigue disponible para realizar consultas.

Tenga en cuenta las siguientes restricciones:

  • No puede modificar una columna con el mismo tipo de codificación o uno diferente varias veces con un solo comando.

  • No puede modificar una columna para que tenga la misma codificación que la definida actualmente.

  • No puede modificar la codificación de una columna en una tabla con una clave de ordenación intercalada.

ALTER DISTSTYLE ALL

Cláusula que cambia el estilo de distribución existente de una tabla a ALL. Considere lo siguiente:

  • Las operaciones ALTER DISTSTYTLE, ALTER SORTKEY y VACUUM no pueden ejecutarse simultáneamente en la misma tabla.

    • Si se está ejecutando la operación VACUUM actualmente, la ejecución de ALTER DISTSTYLE ALL devuelve un error.

    • Si se está ejecutando ALTER DISTSTYLE ALL, una limpieza en segundo plano no se iniciará en las tablas.

  • El comando ALTER DISTSTYLE ALL no está admitido en tablas con claves de ordenación intercaladas y tablas temporales.

  • Si el estilo de distribución se definió previamente como AUTO, la tabla ya no será candidata para la optimización automática de tablas.

Para obtener más información acerca de DISTSTYLE ALL, consulte CREATE TABLE.

ALTER DISTSTYLE EVEN

Cláusula que cambia el estilo de distribución existente de una tabla a EVEN. Considere lo siguiente:

  • Las operaciones ALTER DISTSYTLE, ALTER SORTKEY y VACUUM no pueden ejecutarse simultáneamente en la misma tabla.

    • Si se está ejecutando VACUUM actualmente, la ejecución de ALTER DISTSTYLE EVEN devuelve un error.

    • Si se está ejecutando ALTER DISTSTYLE EVEN, una limpieza en segundo plano no se inicia en una tabla.

  • El comando ALTER DISTSTYLE EVEN no se admite en tablas con claves de ordenación intercaladas y tablas temporales.

  • Si el estilo de distribución se definió previamente como AUTO, la tabla ya no será candidata para la optimización automática de tablas.

Para obtener más información acerca de DISTSTYLE EVEN, consulte CREATE TABLE.

ALTER DISTKEY column_name o ALTER DISTSTYLE KEY DISTKEY column_name

Una cláusula que cambia la columna usada como la clave de distribución de una tabla. Considere lo siguiente:

  • Las operaciones VACUUM y ALTER DISTKEY no se pueden ejecutar simultáneamente en la misma tabla.

    • Si ya se está ejecutando VACUUM, ALTER DISTKEY devolverá un error.

    • Si se está ejecutando ALTER DISTKEY, la limpieza en segundo plano no se iniciará en las tablas.

    • Si se está ejecutando ALTER DISTKEY, la limpieza en primer plano devolverá un error.

  • Solo puede ejecutar un comando ALTER DISTKEY en una tabla cada vez.

  • El comando ALTER DISTKEY no es compatible en tablas con claves de ordenación intercalada.

  • Si el estilo de distribución se definió previamente como AUTO, la tabla ya no será candidata para la optimización automática de tablas.

Al especificar DISTSTYLE KEY, los datos se distribuyen por los valores en la columna DISTKEY. Para obtener más información acerca de DISTSTYLE, consulte CREATE TABLE.

ALTER DISTSTYLE AUTO

Se trata de una cláusula que cambia el estilo de distribución existente de una tabla a AUTO.

Si modifica un estilo de distribución a AUTO, el estilo de distribución de la tabla se establece en las siguientes opciones:

  • Una tabla pequeña con DISTSTYLE ALL se convierte a AUTO(ALL).

  • Una tabla pequeña con DISTSTYLE EVEN se convierte a AUTO(ALL).

  • Una tabla pequeña con DISTSTYLE KEY se convierte a AUTO(ALL).

  • Una tabla grande con DISTSTYLE ALL se convierte a AUTO(EVEN).

  • Una tabla grande con DISTSTYLE EVEN se convierte a AUTO(EVEN).

  • Una tabla grande con DISTSTYLE KEY se convierte a AUTO(KEY) y se conserva DISTKEY. En este caso, Amazon Redshift no cambia la tabla.

Si Amazon Redshift determina que un estilo de distribución nuevo o una clave nueva mejorarán el rendimiento de las consultas, Amazon Redshift podría cambiar el estilo de distribución o la clave de la tabla en el futuro. Por ejemplo, Amazon Redshift podría convertir una tabla con un valor de DISTSTYLE de AUTO(KEY) en AUTO(EVEN) o viceversa. Para obtener más información sobre el comportamiento cuando se modifican las claves de distribución, incluida la redistribución de datos y los bloqueos, consulte las Recomendaciones de Amazon Redshift Advisor.

Para obtener más información acerca de DISTSTYLE AUTO, consulte CREATE TABLE.

Para ver el estilo de distribución de una tabla, consulte la vista de catálogo del sistema SVV_TABLE_INFO. Para obtener más información, consulte SVV_TABLE_INFO. Si desea ver las recomendaciones para tablas de Advisor de Amazon Redshift, consulte la vista de catálogo del sistema SVV_ALTER_TABLE_RECOMMENDATIONS. Para obtener más información, consulte SVV_ALTER_TABLE_RECOMMENDATIONS. Para ver las acciones llevadas a cabo por Amazon Redshift, consulte la vista de catálogo del sistema SVL_AUTO_WORKER_ACTION. Para obtener más información, consulte SVL_AUTO_WORKER_ACTION.

ALTER [COMPOUND] SORTKEY ( column_name [,...] )

Una cláusula que cambia o agrega la clave de ordenación utilizada para una tabla. ALTER SORTKEY no se admite en tablas temporales.

Cuando se modifica una clave de ordenación, la codificación de compresión de las columnas de la clave de ordenación nueva u original puede cambiar. Si no se define de forma explícita ninguna codificación para la tabla, entonces Amazon Redshift asigna automáticamente las codificaciones de compresión de la siguiente manera:

  • A las columnas que están definidas como claves de ordenación se les asigna una compresión RAW.

  • A las columnas que están definidas como tipos de datos BOOLEAN, REAL o DOUBLE PRECISION se les asigna una compresión RAW.

  • A las columnas que se definen como SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP o TIMESTAMPTZ se les asigna la compresión AZ64.

  • Las columnas que se definen como CHAR o VARCHAR tienen asignada la compresión LZO.

Considere lo siguiente:

  • Puede definir un máximo de 400 columnas para una clave de ordenación para cada tabla.

  • Puede alterar una clave de ordenación intercalada por una clave de ordenación compuesta o por ninguna clave de ordenación. No obstante, no puede alterar una clave de ordenación compuesta por una clave de ordenación intercalada.

  • Si la clave de ordenación se definió previamente como AUTO, la tabla ya no será candidata para la optimización automática de tablas.

  • Amazon Redshift recomienda utilizar la codificación RAW (sin compresión) para columnas definidas como claves de ordenación. Cuando se modifica una columna para elegirla como clave de ordenación, la compresión de la columna se cambia a la compresión RAW (sin compresión). Esto puede aumentar la cantidad de almacenamiento que requiere la tabla. El aumento del tamaño de la tabla depende de la definición y el contenido específicos de la tabla. Para obtener más información acerca de la compresión, consulte Codificaciones de compresión.

Cuando se cargan datos en un tabla, se cargan en el orden definido por la clave de ordenación. Cuando se modifica la clave de ordenación, Amazon Redshift reordena los datos. Para obtener más información acerca de SORTKEY, consulte CREATE TABLE.

ALTER SORTKEY AUTO

Se trata de una cláusula que modifica la clave de ordenación de la tabla de destino a AUTO o la agrega. ALTER SORTKEY AUTO no se admite en tablas temporales.

Cuando se modifica una clave de ordenación a AUTO, Amazon Redshift conserva la clave de ordenación existente de la tabla.

Si Amazon Redshift determina que una clave de ordenación nueva mejorará el rendimiento de las consultas, Amazon Redshift podría cambiar la clave de ordenación de la tabla en el futuro.

Para obtener más información acerca de SORTKEY AUTO, consulte CREATE TABLE.

Para ver la clave de ordenación de una tabla, consulte la vista de catálogo del sistema SVV_TABLE_INFO. Para obtener más información, consulte SVV_TABLE_INFO. Si desea ver las recomendaciones para tablas de Advisor de Amazon Redshift, consulte la vista de catálogo del sistema SVV_ALTER_TABLE_RECOMMENDATIONS. Para obtener más información, consulte SVV_ALTER_TABLE_RECOMMENDATIONS. Para ver las acciones llevadas a cabo por Amazon Redshift, consulte la vista de catálogo del sistema SVL_AUTO_WORKER_ACTION. Para obtener más información, consulte SVL_AUTO_WORKER_ACTION.

ALTER SORTKEY NONE

Se trata de una cláusula que quita la clave de ordenación de la tabla de destino.

Si la clave de ordenación se definió previamente como AUTO, la tabla ya no será candidata para la optimización automática de tablas.

ALTER ENCODE AUTO

Se trata de una cláusula que cambia el tipo de codificación de las columnas de la tabla de destino a AUTO. Cuando se cambia la codificación a AUTO, Amazon Redshift conserva el tipo de codificación existente de las columnas de la tabla. Luego, si Amazon Redshift determina que un nuevo tipo de codificación puede mejorar el rendimiento de la consulta, Amazon Redshift puede cambiar el tipo de codificación de las columnas de la tabla.

Si modifica una o más columnas para especificar una codificación, Amazon Redshift ya no ajustará de forma automática la codificación para todas las columnas de la tabla. Las columnas retienen la configuración de la codificación actual.

Las siguientes acciones no afectan al ajuste ENCODE AUTO de la tabla:

  • cambiar el nombre de la tabla

  • modificar el ajuste DISTSTYLE o SORTKEY de la tabla

  • agregar o soltar una columna con un ajuste ENCODE

  • utilizar la opción COMPUPDATE del comando COPY Para obtener más información, consulte Operaciones de carga de datos.

Para ver la codificación de una tabla, consulte la vista de catálogo del sistema SVV_TABLE_INFO. Para obtener más información, consulte SVV_TABLE_INFO.

RENAME COLUMN column_name TO new_name

Cláusula que cambia el nombre de una columna al valor especificado en new_name. La longitud máxima del nombre de la columna es de 127 bytes; los nombres más largos se truncan en 127 bytes. Para obtener más información acerca de los nombres válidos, consulte Nombres e identificadores.

ADD [ COLUMN ] column_name

Una cláusula que agrega una columna con el nombre especificado a la tabla. Solo se puede agregar una columna en cada instrucción ALTER TABLE.

No se puede agregar una columna que sea la clave de distribución (DISTKEY) o la clave de ordenación (SORTKEY) de la tabla.

No se puede usar un comando ALTER TABLE ADD COLUMN para modificar los siguientes atributos de tabla y de columna:

  • UNIQUE

  • PRIMARY KEY

  • REFERENCES (clave externa)

  • IDENTITY o GENERATED BY DEFAULT AS IDENTITY

La longitud máxima del nombre de la columna es de 127 bytes; los nombres más largos se truncan en 127 bytes. La cantidad máxima de columnas que se pueden definir en una única tabla es 1 600.

Las restricciones siguientes se aplican al agregar una columna a una tabla externa:

  • No se puede agregar una columna a una tabla externa con las restricciones de columna DEFAULT, ENCODE, NOT NULL o NULL.

  • No se pueden agregar columnas a una tabla externa definida con el formato de archivo AVRO.

  • Si están habilitadas las pseudocolumnas, el número máximo de columnas que se pueden definir en una única tabla externa es de 1 598. Si las pseudocolumnas no están habilitadas, el número máximo de columnas que se pueden definir en una única tabla es de 1 600.

Para obtener más información, consulte CREATE EXTERNAL TABLE.

column_type

El tipo de datos de la columna que se agrega. Para las columnas CHAR y VARCHAR, puede usar la palabra clave MAX en lugar de declarar una longitud máxima. MAX establece la longitud máxima en 4 096 bytes para CHAR o 65 535 bytes para VARCHAR. El tamaño máximo del objeto GEOMETRY es 1 048 447 bytes.

Para obtener información acerca de los tipos de datos compatibles con Amazon Redshift, consulte Tipos de datos.

DEFAULT default_expr

Una cláusula que asigna un valor de datos predeterminado para la columna. El tipo de datos de default_expr debe coincidir con el tipo de datos de la columna. El valor DEFAULT debe ser una expresión sin variables. No se permiten subconsultas, referencias cruzadas a otras columnas de la tabla actual ni funciones definidas por el usuario.

El valor default_expr se utiliza en cualquier operación INSERT en la que no se especifica un valor para la columna. Si no se especifica un valor predeterminado, el valor predeterminado para la columna es nulo.

Si una operación COPY se encuentra con un campo nulo en una columna que tiene un valor DEFAULT y una restricción NOT NULL, el comando COPY inserta el valor de default_expr.

DEFAULT no se admite para las tablas externas.

ENCODE encoding

La codificación de compresión de una columna. Si no se especifica la codificación de compresión para ninguna columna de una tabla o si se especifica la opción ENCODE AUTO para la tabla, Amazon Redshift administra automáticamente la codificación de compresión de todas las columnas de la tabla de manera predeterminada.

Si se especifica la codificación de compresión para cualquier columna de la tabla o si no se especifica la opción ENCODE AUTO para esta, Amazon Redshift asigna automáticamente la codificación de compresión a las columnas para las cuales no se especifica dicha codificación, como se indica a continuación:

  • Por defecto, se asigna una compresión RAW a todas las columnas de tablas temporales.

  • A las columnas que están definidas como claves de ordenación se les asigna una compresión RAW.

  • A las columnas que están definidas como tipos de datos BOOLEAN, REAL, DOUBLE PRECISION, GEOMETRY o GEOGRAPHY se les asigna una compresión RAW.

  • A las columnas que se definen como SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP o TIMESTAMPTZ se les asigna la compresión AZ64.

  • A las columnas que se definen como CHAR, VARCHAR o VARBYTE se les asigna la compresión LZO.

nota

Si no desea que una columna se comprima, especifique explícitamente la codificación RAW.

Se admiten los siguientes compression encodings:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW (sin comprimir)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

ENCODE no se admite para las tablas externas.

NOT NULL | NULL

NOT NULL indica que la columna no puede contener valores nulos. NULL, el valor predeterminado, especifica que la columna acepta valores nulos.

NOT NULL y NULL no se admiten para las tablas externas.

COLLATE { CASE_SENSITIVE | CASE_INSENSITIVE }

Se trata de una cláusula que especifica si la búsqueda o la comparación de cadenas en la columna es CASE_SENSITIVE o CASE_INSENSITIVE. El valor predeterminado es el mismo que la configuración actual de distinción entre mayúsculas y minúsculas de la base de datos.

Para encontrar información de la intercalación de bases de datos, utilice el siguiente comando:

SELECT db_collation(); db_collation ---------------- case_sensitive (1 row)
DROP [ COLUMN ] column_name

El nombre de la columna que se debe eliminar de la tabla.

No se puede eliminar la última columna de una tabla. Una tabla debe tener como mínimo una columna.

No se puede eliminar una columna que sea la clave de distribución (DISTKEY) o la clave de ordenación (SORTKEY) de la tabla. El comportamiento predeterminado de DROP COLUMN es RESTRICT si la columna tiene objetos dependientes, como vista, clave principal, clave externa o restricción UNIQUE.

Las restricciones siguientes se aplican al quitar una columna de una tabla externa:

  • No se puede eliminar una columna de una tabla externa si la columna se utiliza como partición.

  • No se puede eliminar una columna de una tabla externa definida con el formato de archivo AVRO.

  • RESTRICT y CASCADE no se tienen en cuenta para las tablas externas.

  • No puede eliminar las columnas de la tabla de políticas a la que se hace referencia dentro de la definición de política a menos que elimine o desactive la política. Esto también se aplica cuando se especifica la opción CASCADE. Puede eliminar otras columnas de la tabla de políticas.

Para obtener más información, consulte CREATE EXTERNAL TABLE.

RESTRICT

Cuando se usa con DROP COLUMN, RESTRICT significa que la columna que se va a eliminar no se eliminará, en los siguientes casos:

  • Si una vista definida hace referencia a la columna que desea eliminar

  • Si una clave externa hace referencia a la columna

  • Si la columna forma parte de una clave multiparte

RESTRICT no puede utilizarse con CASCADE.

RESTRICT y CASCADE no se tienen en cuenta para las tablas externas.

CASCADE

Cuando se usa con DROP COLUMN, elimina la columna especificada y todos los elementos que dependen de esa columna. CASCADE no puede utilizarse con RESTRICT.

RESTRICT y CASCADE no se tienen en cuenta para las tablas externas.

Las siguientes opciones se aplican solo a tablas externas.

SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }

Se trata de la ruta a la carpeta de Amazon S3 que contiene los archivos de datos o un archivo de manifiesto que incluye una lista de rutas de objetos de Amazon S3. Los buckets deben estar en la misma región de AWS que el clúster de Amazon Redshift. Para obtener una lista de las regiones de AWS admitidas, consulte Limitaciones de Amazon Redshift Spectrum. Para obtener más información acerca del uso de un archivo de manifiesto, consulte LOCATION en la sección Parámetros de la documentación sobre el comando CREATE EXTERNAL TABLE.

SET FILE FORMAT format

El formato de archivo para los archivos de datos externos.

Los formatos válidos son los siguientes:

  • AVRO

  • PARQUET

  • RCFILE

  • SEQUENCEFILE

  • TEXTFILE

SET TABLE PROPERTIES ( 'property_name'='property_value')

Cláusula que establece la definición de las propiedades de una tabla externa.

nota

Las propiedades de tabla distinguen entre mayúsculas y minúsculas.

'numRows'='row_count'

Una propiedad que establece el valor de numRows para la definición de la tabla. Para actualizar de forma explícita las estadísticas de una tabla externa, establezca la propiedad numRows de manera que indique el tamaño de la tabla. Amazon Redshift no analiza las tablas externas para generar las estadísticas de las tablas que el optimizador de consultas emplea a la hora de crear un plan de consulta. Si no se establecen las estadísticas de la tabla que corresponden a una tabla externa, Amazon Redshift crea un plan de ejecución de consultas. El plan se basa en la suposición de que las tablas externas son las tablas más grandes y las tablas locales son las tablas más pequeñas

'skip.header.line.count'='line_count'

Una propiedad que establece el número de filas que se omiten al principio de cada archivo de código fuente.

PARTITION ( partition_column=partition_value [, ...] SET LOCATION { 's3://bucket/folder' | 's3://bucket/manifest_file' }

Una cláusula que configura una nueva ubicación para una o más columnas de partición.

ADD [ IF NOT EXISTS ] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' | 's3://bucket/manifest_file' } [, ... ]

Una cláusula que agrega una o más particiones. Puede especificar múltiples cláusulas PARTITION mediante una única instrucción ALTER TABLE … ADD.

nota

Si usa el catálogo de AWS Glue, puede agregar hasta 100 particiones mediante una única instrucción ALTER TABLE.

La cláusula IF NOT EXISTS indica que si la partición especificada ya existe, el comando no debería realizar ningún cambio. También indica que el comando debe devolver un mensaje en el que se indique que la tabla existe, en lugar de terminar con un error. Esta cláusula es útil cuando se realiza scripting, para que el script no produzca un error si ALTER TABLE intenta agregar una partición que ya existe.

DROP PARTITION (partition_column=partition_value [, ...] )

Una cláusula que elimina la partición especificada. Eliminar una partición modifica solo los metadatos de la tabla externa. Los datos de Amazon S3 no se ven afectados.

ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]

Es una cláusula que activa o desactiva la seguridad de nivel de fila para una relación.

Cuando la seguridad de nivel de fila está activada para una relación, solo puede leer las filas a las que la política de seguridad de nivel de fila le permite acceder. Si no hay ninguna política que le conceda acceso a la relación, no podrá ver ninguna fila de la relación. Solo los superusuarios y los usuarios o roles que tienen el rol sys:secadmin pueden establecer la cláusula ROW LEVEL SECURITY. Para obtener más información, consulte Seguridad de nivel básico.

  • [ CONJUNCTION TYPE { AND | OR } ]

    Es una cláusula que le permite elegir el tipo de conjunción de la política de seguridad a nivel de fila para una relación. Si se asocian varias políticas de seguridad en el nivel de fila a una relación, puede combinarlas con la cláusula AND u OR. De forma predeterminada, Amazon Redshift combina las políticas de RLS con la cláusula AND. Los superusuarios, usuarios o roles que tienen el rol sys:secadmin pueden usar esta cláusula para definir el tipo de conjunción de la política de seguridad de nivel de fila para una relación. Para obtener más información, consulte Combinación de varias políticas por usuario.

  • PARA RECURSOS COMPARTIDOS DE DATOS

    Es una cláusula que determina si se puede acceder a una relación protegida por RLS a través de recursos compartidos de datos. De forma predeterminada, no se puede acceder a una relación protegida por RLS a través de un recurso compartido de datos. Un comando ALTER TABLE ROW LEVEL SECURITY ejecutado con esta cláusula solo afecta a la propiedad de accesibilidad de recurso compartido de datos de la relación. La propiedad ROW LEVEL SECURITY no ha cambiado.

    Si hace que una relación protegida por RLS sea accesible a través de recursos compartidos de datos, la relación no tendrá seguridad de nivel de fila en la base de datos de recurso compartido de datos del lado del consumidor. La relación conserva su propiedad RLS del lado del productor.

MASKING { ON | OFF } FOR DATASHARES

Es una cláusula que determina si se puede acceder a una relación protegida por DDM a través de recursos compartidos de datos. De forma predeterminada, no se puede acceder a una relación protegida por DDM a través de un recurso compartido de datos. Si hace que una relación protegida por DDM sea accesible a través de recursos compartidos de datos, la relación no tendrá protección con enmascaramiento en la base de datos de recurso compartido de datos del lado del consumidor. La relación conserva su propiedad de enmascaramiento del lado del productor. Solo los superusuarios y los usuarios o roles que tengan el rol sys:secadmin pueden establecer la cláusula MASKING FOR DATASHARES. Para obtener más información, consulte Enmascaramiento de datos dinámico.

Ejemplos

Para ver ejemplos que muestran cómo utilizar el comando ALTER TABLE, consulte lo siguiente.