CREATE SCHEMA
Define un nuevo esquema para la base de datos actual.
Privilegios necesarios
Los siguientes privilegios son necesarios para CREATE SCHEMA:
Superusuario
Usuarios con el privilegio CREATE SCHEMA
Sintaxis
CREATE SCHEMA [ IF NOT EXISTS ] schema_name [ AUTHORIZATION username ] [ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] CREATE SCHEMA AUTHORIZATION username[ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] ]
Parámetros
- IF NOT EXISTS
-
Cláusula que indica que si el esquema especificado ya existe, el comando no debe realizar cambios y debe devolver un mensaje en el que se indique que el esquema 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 CREATE SCHEMA intenta crear un esquema que ya existe.
- schema_name
-
Nombre del nuevo esquema. El nombre del esquema no puede ser
PUBLIC
. Para obtener más información acerca de los nombres válidos, consulte Nombres e identificadores.nota
La lista de esquemas en el parámetro de configuración search_path determina la prioridad de objetos con nombres idénticos cuando se les hace referencia sin nombres de esquema.
- AUTHORIZATION
-
Cláusula que otorga propiedad a un usuario especificado.
- username
-
Nombre del propietario del esquema.
- schema_element
-
Definición de uno o más objetos que se crearán dentro del esquema.
- QUOTA
-
La cantidad máxima de espacio en disco que puede utilizar el esquema especificado. Este espacio es el uso colectivo del disco. Incluye todas las tablas permanentes, vistas materializadas bajo el esquema especificado y copias duplicadas de todas las tablas con distribución ALL en cada nodo de computación. La cuota de esquema no tiene en cuenta las tablas temporales creadas como parte de un espacio de nombres o un esquema temporales.
Para ver las cuotas del esquema configuradas, consulte SVV_SCHEMA_QUOTA_STATE.
Para ver los registros en los que se superaron las cuotas del esquema, consulte STL_SCHEMA_QUOTA_VIOLATIONS.
Amazon Redshift convierte el valor seleccionado en megabytes. Gigabytes es la unidad de medida predeterminada cuando no se especifica un valor.
Debe ser un superusuario de base de datos para establecer y cambiar una cuota de esquema. Un usuario que no sea superusuario pero que tenga permiso CREATE SCHEMA puede crear un esquema con una cuota definida. Cuando se crea un esquema sin definir una cuota, el esquema tiene una cuota ilimitada. Cuando se establece la cuota por debajo del valor actual utilizado por el esquema, Amazon Redshift no permite más ingesta hasta que se libere espacio en el disco. Una instrucción DELETE elimina datos de una tabla y el espacio en disco solo se libera cuando se ejecuta VACUUM.
Amazon Redshift verifica cada transacción en busca de infracciones de cuota antes de confirmar la transacción. Amazon Redshift revisa el tamaño (el espacio en disco utilizado por todas las tablas de un esquema) de cada esquema modificado en comparación con la cuota establecida. Dado que la comprobación de infracción de cuota se produce al final de una transacción, el límite de tamaño puede superar temporalmente la cuota dentro de una transacción antes de que se confirme. Cuando una transacción supera la cuota, Amazon Redshift detiene la transacción, prohíbe ingestas posteriores y revierte todos los cambios hasta que se libere espacio en el disco. Como la operación VACUUM y la limpieza interna se producen en segundo plano, es posible que un esquema no esté lleno al momento de su verificación después de que se cancela una transacción.
Como excepción, Amazon Redshift no tiene en cuenta la infracción de cuota y confirma transacciones en determinados casos. Amazon Redshift hace esto para transacciones que constan únicamente de una o más de las siguientes instrucciones donde no hay una instrucción de ingesta INSERT o COPY en la misma transacción:
-
DELETE
-
TRUNCATE
-
VACUUM
-
DROP TABLE
-
ALTER TABLE APPEND solo cuando se mueven datos desde el esquema completo a otro esquema no completo
-
- UNLIMITED
-
Amazon Redshift no impone ningún límite al crecimiento del tamaño total del esquema.
Límites
Amazon Redshift aplica los siguientes límites para los esquemas.
-
Hay un máximo de 9 900 esquemas por base de datos.
Ejemplos
En el siguiente ejemplo, se crea un esquema denominado US_SALES y le otorga la propiedad al usuario DWUSER.
create schema us_sales authorization dwuser;
En el siguiente ejemplo, se crea un esquema denominado US_SALES, se otorga la propiedad al usuario DWUSER y se establece la cuota en 50 GB.
create schema us_sales authorization dwuser QUOTA 50 GB;
Para ver el nuevo esquema, consulte la tabla de catálogo PG_NAMESPACE, como se muestra a continuación.
select nspname as schema, usename as owner from pg_namespace, pg_user where pg_namespace.nspowner = pg_user.usesysid and pg_user.usename ='dwuser'; schema | owner ----------+---------- us_sales | dwuser (1 row)
En el siguiente ejemplo, se crea el esquema US_SALES o no se hace nada y se devuelve un mensaje si el esquema ya existe:
create schema if not exists us_sales;