Pro · Lesson 5 of 9
COPY pulls files from S3 in parallel. Zero-ETL replicates supported databases when you should not write that job.
Sign in to save your place.
COPY is a loading dock. Files sit in S3. Redshift's own workers pick them up in parallel. Inserting a million rows from your laptop is a person carrying boxes through the front door. Zero-ETL is a conveyor Amazon builds from Aurora, RDS, or DynamoDB so you do not staff the dock yourself.
Land files in S3 as CSV, JSON, or Parquet. Give Redshift an IAM role that can read that prefix, and attach the role to the cluster or the Serverless namespace. Do not paste long-lived keys into the SQL. A manifest file lists the objects when the folder contains extras you must not load.
COPY analytics.orders
FROM 's3://your-bucket/orders/'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftCopy'
FORMAT AS PARQUET;Useful options, used on purpose: MAXERROR to tolerate a few bad lines while you inspect them, and compression that matches the files. After a large copy, confirm the row count against the source. A command that succeeds can still have skipped rows if you allowed errors.
Your laptop can read the bucket and the COPY can still fail, because the IAM role on the warehouse is the identity that matters.
Zero-ETL integrations replicate from supported sources, including Aurora, Amazon RDS, and DynamoDB, into Redshift. Use that when the source is already on AWS and you want near-real-time tables without a COPY job. You still design distribution and sort on the Redshift side, and you still decide who may query the replica. Zero-ETL does not replace a modeled mart. It replaces the plumbing that kept the replica full.
If the source is a file drop from another company, COPY or a pipeline that writes Parquet remains the right door. Mixing both is normal: zero-ETL for operational tables, COPY for files.
Bulk-load files with COPY, or let a zero-ETL integration replicate a database for you.
Step 1 of 3Split large exports into several compressed files so every slice can load at the same time.
s3://bucket/sales/part-0001.parquet … part-0016.parquet
Step 2 of 3COPY reads all the files in a prefix in parallel. It is far faster than inserting rows one at a time.
COPY sales FROM 's3://bucket/sales/'
IAM_ROLE default FORMAT AS PARQUET;
Step 3 of 3A zero-ETL integration keeps Redshift updated from Aurora, RDS or DynamoDB continuously, without you building a pipeline.
Redshift → Zero-ETL integrations → Create → Aurora MySQL source
If you can create a bucket, write ten rows of CSV and COPY them with an IAM role. If you cannot, read a failed COPY message and name which of these it is: role, path, or file format. Those three cover most first failures.
Checked against vendor documentation in October 2026. Screens and plan names still change, so confirm the control in your own instance.