COPY - Amazon Redshift

COPY

Carga datos en una tabla desde archivos de datos o desde una tabla de Amazon DynamoDB. Los archivos pueden encontrarse en un bucket de Amazon Simple Storage Service (Amazon S3), un clúster de Amazon EMR o un alojamiento remoto al que se puede acceder mediante una conexión Secure Shell (SSH).

nota

Las tablas externas de Amazon Redshift Spectrum solo se pueden leer. No puede aplicar COPY a una tabla externa.

El comando COPY anexa los datos de entrada como filas adicionales a la tabla.

El tamaño máximo de una fila de entrada única de cualquier origen es de 4 MB.

Permisos necesarios

Para utilizar el comando COPY, debe tener el privilegio INSERT para la tabla de Amazon Redshift.

Sintaxis de COPY

COPY table-name [ column-list ] FROM data_source authorization [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [, ... ] ]

Puede realizar una operación COPY con un mínimo de tres parámetros: un nombre de tabla, un origen de datos y una autorización para obtener acceso a los datos.

Amazon Redshift extiende la funcionalidad del comando COPY para permitir la carga de datos en varios formatos de datos de varios orígenes de datos, el control del acceso a los datos de carga, la administración de las transformaciones de datos y la administración de la operación de carga.

Las siguientes secciones presentan los parámetros requeridos del comando COPY, mediante la agrupación de los parámetros opcionales por función. También describen cada parámetro y explican el funcionamiento conjunto de las distintas opciones. Puede ir directamente a la descripción de un parámetro mediante la lista alfabética de parámetros.

Parámetros necesarios

El comando COPY requiere tres elementos:

El comando COPY más sencillo utiliza el siguiente formato.

COPY table-name FROM data-source authorization;

En el siguiente ejemplo, se crea una tabla denominada CATDEMO y luego se carga la tabla con datos de ejemplo de un archivo de datos de Amazon S3 denominado category_pipe.txt.

create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));

En el siguiente ejemplo, el origen de datos del comando COPY es un archivo de datos llamado category_pipe.txt que se encuentra en la carpeta tickit de un bucket de Amazon S3 denominado redshift-downloads. El comando COPY tiene autorización para acceder al bucket de Amazon S3 a través de un rol de AWS Identity and Access Management (IAM). Si el clúster tiene adjunto un rol de IAM ya existente con permiso para acceder a Amazon S3, puede sustituir el nombre de recurso de Amazon (ARN) del rol en el siguiente comando COPY y ejecutarlo.

copy catdemo from 's3://redshift-downloads/tickit/category_pipe.txt' iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>' region 'us-east-1';

Para conocer los pasos necesarios para crear un rol de IAM, consulte Paso 2: Crear un rol de IAM en la Guía de introducción a Amazon Redshift. Para obtener todas las instrucciones sobre cómo se utilizan los comandos COPY para cargar datos de muestra, incluidas las instrucciones para cargar datos de otras regiones de AWS, consulte Paso 6: Cargar datos de muestra desde Amazon S3 en la Guía de introducción a Amazon Redshift.

table-name (nombre-tabla)

El nombre de la tabla de destino para el comando COPY. La tabla ya debe existir en la base de datos. La tabla puede ser temporal o persistente. El comando COPY adjunta los nuevos datos de entrada a cualquier fila existente en la tabla.

FROM data-source (origen-datos)

La ubicación de los datos de origen que se van a cargar en la tabla de destino. Puede especificarse un archivo de manifiesto con algunos orígenes de datos.

El repositorio de datos más utilizado es un bucket de Amazon S3. También puede cargar datos de archivos de datos ubicados en un clúster de Amazon EMR, una instancia de Amazon EC2 o un alojamiento remoto al que el clúster puede acceder a través de una conexión SSH, o puede cargarlos directamente desde una tabla de DynamoDB.

Autorización

Se trata de una cláusula que indica el método que el clúster utiliza para la autenticación y la autorización con objeto de acceder a otros recursos de AWS. El comando COPY necesita autorización para acceder a los datos de otro recurso de AWS, incluidos los recursos de Amazon S3, Amazon EMR, Amazon DynamoDB y Amazon EC2. Puede proporcionar esa autorización haciendo referencia a un rol de IAM que esté asociado al clúster o proporcionando el ID de clave de acceso y la clave de acceso secreta de un usuario de IAM.

Parámetros opcionales

De forma opcional, puede especificar el modo en que COPY asigna los datos de campo a las columnas de la tabla de destino, definir los atributos de datos de origen para permitir al comando COPY leer y analizar los datos de origen de forma correcta y administrar qué operaciones realiza el comando COPY durante el proceso de carga.

Mapeo de columnas

De manera predeterminada, COPY inserta los valores de campo en las columnas de la tabla de destino en el mismo orden que aparecen los campos en los archivos de datos. Si el orden de columnas predeterminado no funcionará, puede especificar una lista de columnas o utilizar las expresiones JSONPath para asignar los campos de datos de origen a las columnas de destino.

Parámetros de formato de datos

Puede cargar datos de archivos de texto en formato JSON, de valores separados por coma (CSV), de ancho fijo o delimitados por caracteres, o de archivos de Avro.

De manera predeterminada, el comando COPY espera que los datos de origen estén en archivos de texto UTF-8 delimitados por caracteres. El delimitador predeterminado es el carácter de barra vertical ( | ). Si los datos de origen están en otro formato, utilice los siguientes parámetros para especificar el formato de datos.

Parámetros de conversión de datos

A medida que carga la tabla, COPY intenta convertir de forma implícita las cadenas de los datos de origen al tipo de datos de la columna de destino. Si necesita especificar una conversión que sea diferente a la del comportamiento predeterminado, o si la conversión predeterminada da lugar a errores, puede administrar las conversiones de datos especificando los siguientes parámetros.

Operaciones de carga de datos

Administre el comportamiento predeterminado de la operación de carga para solucionar problemas o reducir los tiempos de carga especificando los siguientes parámetros.

Notas de uso y recursos adicionales para el comando COPY

Para obtener más información acerca de cómo utilizar el comando COPY, consulte los siguientes temas:

Ejemplos del comando COPY

Para ver más ejemplos que muestran cómo usar COPY desde varios orígenes, en formatos dispares y con diferentes opciones de COPY, consulte Ejemplos de COPY.