← Back to Tutorials

21. Unload to S3

-- Unload to external stage
COPY INTO @s3_stage/unload/
FROM my_table
FILE_FORMAT = (TYPE = PARQUET COMPRESSION = SNAPPY)
OVERWRITE = TRUE;

-- Partitioned unload
COPY INTO @s3_stage/unload/
FROM my_table
PARTITION BY ('dt=' || DATE(sale_date))
FILE_FORMAT = (TYPE = CSV)
HEADER = TRUE;

-- Validate unload
SELECT COUNT(*) FROM @s3_stage/unload/;

Unload Patterns

PatternWhen to Use
CSV with headerData sharing, BI tools
Parquet snappyEfficient columnar, downstream ETL
JSONAPI consumption
PartitionedHive-style partitioning for Spark/Athena

Best Practices

COPY INTO @s3_stage/report.csv
FROM (SELECT * FROM my_table ORDER BY id)
FILE_FORMAT = (TYPE = CSV HEADER = TRUE)
SINGLE = TRUE
MAX_FILE_SIZE = 500000000;
✏️ Exercise: Unload a table to S3 in Parquet format with Snappy compression. Verify the files in S3.