Grant the Redshift cluster's IAM role s3:GetObject and s3:ListBucket on the source bucket, and associate the role with the cluster.
Stage data in S3 in a supported format (CSV, JSON, Parquet, etc.); for CSV ensure the delimiter and NULL-as characters match the COPY options.
Execute the COPY command in Redshift: COPY {table_name} FROM 's3://{bucket}/{prefix}' IAM_ROLE 'arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME' FORMAT AS {format} [additional options];
After the COPY completes, query STL_LOAD_COMMITS or STL_LOAD_ERRORS to verify row counts and identify any rejected rows.
Vacuum and analyze the target table after large loads to update table statistics for the query planner.
Known gotchas
The IAM role ARN must be fully specified in the COPY command; using partial names or aliases results in an access error.
Redshift's COPY is not transactional in the same way as a standard INSERT; if the session is interrupted, partially loaded data may remain — use a staging table pattern for idempotent loads.
Mismatched column counts or data type issues cause rows to be rejected silently unless MAXERROR is set low; check STL_LOAD_ERRORS after every load.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp