INSERT - Amazon Redshift

INSERT

Inserta nuevas filas en una tabla. Puede insertar una única fila con la sintaxis VALUES, varias filas con la sintaxis VALUES, o una o más filas definidas por los resultados de una consulta (INSERT INTO...SELECT).

nota

Le recomendamos usar el comando COPY para cargar grandes cantidades de datos. El uso de instrucciones INSERT individuales para completar una tabla podría ser prohibitivamente lento. Además, si los datos ya existen en otras tablas de la base de datos de Amazon Redshift, utilice INSERT INTO SELECT o CREATE TABLE AS para mejorar el rendimiento. Para obtener más información acerca del comando COPY para cargar tablas, consulte Carga de datos en Amazon Redshift.

nota

El tamaño máximo de una instrucción SQL es de 16 MB.

Sintaxis

INSERT INTO table_name [ ( column [, ...] ) ] {DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ( { expression | DEFAULT } [, ...] ) [, ...] ] | query }

Parámetros

table_name

Una tabla temporal o persistente. Solo el propietario de la tabla o un usuario con el privilegio INSERT en la tabla puede insertar filas. Si utiliza la cláusula query para insertar filas, debe tener el privilegio SELECT en las tablas que aparecen en la consulta.

nota

Utilice INSERT (tabla externa) para insertar los resultados de una consulta SELECT en tablas existentes del catálogo externo. Para obtener más información, consulte INSERT (tabla externa).

column

Puede insertar valores en una o más columnas de la tabla. Puede enumerar los nombres de las columnas de destino en cualquier orden. Si no se especifica una lista de columnas, los valores que se inserten deben coincidir con las columnas de la tabla en el orden en que se declararon en la instrucción CREATE TABLE. Si la cantidad de valores que deben insertarse es menor que la cantidad de columnas de la tabla, se cargarán las primeras n columnas.

O bien se carga el valor predeterminado declarado, o bien se carga un valor nulo en cualquier columna que no aparezca (de forma implícita o explícita) en la instrucción INSERT.

DEFAULT VALUES

Si se asignaron valores predeterminados a las columnas de la tabla cuando se creó la tabla, utilice estas palabras clave para insertar una fila que conste completamente de valores predeterminados. Si ninguna de las columnas tiene valores predeterminados, se insertan valores nulos en esas columnas. Si alguna de las columnas se declara NOT NULL, la instrucción INSERT devuelve un error.

VALUES

Utilice esta palabra clave para insertar una o más filas; cada fila debe constar de uno o más valores. La lista VALUES para cada fila debe alinearse con la lista de columnas. Para insertar varias filas, utilice un delimitador de comas entre cada lista de expresiones. No repita la palabra clave VALUES. Todas las listas VALUES para una instrucción INSERT de varias filas deben contener la misma cantidad de valores.

expresión

Un valor único o una expresión que toma el valor de un valor único. Cada valor debe ser compatible con el tipo de datos de la columna donde se inserta. Si es posible, los valores que tengan un tipo de datos que no coincida con el tipo de datos declarado en la columna se convertirán automáticamente en un tipo de datos compatible. Por ejemplo:

  • Un valor decimal 1.1 se inserta en una columna INT como 1.

  • Un valor decimal 100.8976 se inserta en una columna DEC (5,2) como 100.90.

Puede convertir explícitamente un valor a un tipo de datos compatible al incluir la sintaxis de conversión de tipo en la expresión. Por ejemplo, si la columna COL1 de la tabla T1 es una columna CHAR(3):

insert into t1(col1) values('Incomplete'::char(3));

Esta instrucción inserta el valor Inc en la columna.

Para una instrucción INSERT VALUES de una fila, puede usar una subconsulta escalar como expresión. El resultado de la subconsulta se inserta en la columna adecuada.

nota

Las subconsultas no pueden utilizarse como expresiones de instrucciones INSERT VALUES de varias filas.

DEFAULT

Utilice esta palabra clave para insertar el valor predeterminado de una columna, como se definió cuando se creó la tabla. Si no existe un valor predeterminado para una columna, se inserta un valor nulo. No se puede insertar un valor predeterminado en una columna que tenga una restricción NOT NULL si esa columna no tiene un valor predeterminado explícito asignado en la instrucción CREATE TABLE.

consulta

Inserte una o más filas en la tabla al definir cualquier consulta. Todas las filas que la consulta produce se insertan en la tabla. La consulta debe devolver una lista de columnas compatible con las columnas de la tabla, pero los nombres de las columnas no tienen que coincidir.

Notas de uso

nota

Le recomendamos usar el comando COPY para cargar grandes cantidades de datos. El uso de instrucciones INSERT individuales para completar una tabla podría ser prohibitivamente lento. Además, si los datos ya existen en otras tablas de la base de datos de Amazon Redshift, utilice INSERT INTO SELECT o CREATE TABLE AS para mejorar el rendimiento. Para obtener más información acerca del comando COPY para cargar tablas, consulte Carga de datos en Amazon Redshift.

El formato de datos para los valores insertados debe coincidir con el formato de datos especificado por la definición CREATE TABLE.

Después de insertar una gran cantidad de filas nuevas en una tabla:

  • Limpie la tabla para recuperar espacio de almacenamiento y reordene las filas.

  • Analice la tabla para actualizar las estadísticas para el planificador de consultas.

Cuando los valores se insertan en columnas DECIMAL y superan la escala especificada, los valores cargados se redondean según sea adecuado. Por ejemplo, cuando un valor de 20.259 se inserta en una columna DECIMAL(8,2), el valor que se almacena es 20.26.

Puede insertar datos en una columna GENERATED BY DEFAULT AS IDENTITY. Puede actualizar las columnas definidas como GENERATED BY DEFAULT AS IDENTITY con los valores proporcionados. Para obtener más información, consulte GENERATED BY DEFAULT AS IDENTITY.