Uso de un manifiesto para especificar archivos de datos
Puede usar un manifiesto para asegurarse de que el comando COPY cargue todos los archivos requeridos, y solo los requeridos, en la carga de datos. Puede usar un manifiesto para cargar archivos de diferentes buckets o archivos que no comparten el mismo prefijo. En lugar de proporcionar la ruta de un objeto para el comando COPY, se proporciona el nombre de un archivo de texto en formato JSON que lista explícitamente los archivos por cargar. El URL en el manifiesto debe especificar el nombre del bucket y la ruta completa del objeto para el archivo, no solo un prefijo.
Para obtener más información acerca de los archivos de manifiesto, consulte el ejemplo COPY Uso de un manifiesto para especificar archivos de datos.
En el siguiente ejemplo, se muestra el JSON para cargar archivos de diferentes buckets y con nombres de archivo que comiencen con marcas de fecha.
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/2013-10-04-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/2013-10-05-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/2013-10-04-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/2013-10-05-custdata", "mandatory":true} ] }
La marca opcional mandatory
especifica si COPY debe devolver un error en caso de que el archivo no se encuentre. El valor predeterminado de mandatory
es false
. Independientemente de cualquier configuración obligatoria, COPY terminará si no se encuentran archivos.
En el siguiente ejemplo, se ejecuta el comando COPY con el manifiesto del ejemplo anterior, que se denomina cust.manifest
.
COPY customer FROM 's3://amzn-s3-demo-bucket/cust.manifest' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' MANIFEST;
Uso de un manifiesto creado por UNLOAD
Un manifiesto creado por una operación UNLOAD que usa el parámetro MANIFEST podría tener claves no requeridas para la operación COPY. Por ejemplo, en el siguiente manifiesto de UNLOAD
, se incluye una clave meta
que es necesaria para una tabla externa de Amazon Redshift Spectrum y para cargar archivos de datos con el formato ORC
o Parquet
. La clave meta
contiene una clave content_length
con un valor que es el tamaño real del archivo en bytes. La operación COPY requiere solo la clave url
y una clave mandatory
opcional.
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/unload/manifest_0000_part_00", "meta": { "content_length": 5956875 }}, {"url":"s3://amzn-s3-demo-bucket/unload/unload/manifest_0001_part_00", "meta": { "content_length": 5997091 }} ] }
Para obtener más información sobre los archivos de manifiesto, consulte Example: COPY from Amazon S3 using a manifest.