Skip to content

Getting files into and out of Snowflake tables

Snowflake supports bulk loading via COPY INTO <table> from internal or external stages and continuous loading via Snowpipe, while data can be unloaded to stages using COPY INTO <location>. Both loading and unloading rely on file formats, stages, and virtual warehouses (bulk) or serverless compute (Snowpipe) to move data efficiently between Snowflake and external storage.

1 · Learn the must-know

  • COPY INTO <table> loads data from staged files and requires a running virtual warehouse, while COPY INTO <location> unloads table data to files in a stage, both supporting formats like CSV, JSON, Parquet, ORC, XML, and Avro.
  • Internal stages (user, table, or named) and external stages (S3, Azure Blob, GCS) can be used for both loading and unloading; named stages store reusable file format and location metadata.
  • Snowpipe enables continuous, serverless micro-batch loading triggered by cloud event notifications (e.g., S3 event notifications) or REST API calls, and is billed separately from warehouse compute based on actual usage.
  • The COPY command tracks load history metadata for 64 days by default and prevents reloading the same file into the same table unless FORCE=TRUE or the file content changes, avoiding accidental duplicate loads.
  • The VALIDATION_MODE parameter and COPY INTO error handling options (ON_ERROR, SIZE_LIMIT) let you validate or control how many errors are tolerated during a load without failing the entire operation.
  • When unloading, Snowflake can split output into multiple files (using SINGLE=FALSE, the default) for parallelism, and supports compression (e.g., gzip) automatically unless overridden.

2 · Check your understanding

Check this objectiveFree · always available

A Snowflake Practitioner loads daily CSV files into the RAW.ORDERS table using COPY INTO raw.orders FROM @raw_stage FILE_FORMAT = (TYPE = CSV) ON_ERROR = 'SKIP_FILE'. Some files contain a handful of malformed rows among thousands of valid rows, and the entire file is rejected whenever even one row fails. The team now requires that valid rows load successfully while only the malformed rows are skipped, without splitting files manually. Which change should the Practitioner make?

Your objective map0 tried · 0 answered correctly · 19 untouched

What you have tried across SnowPro Core's objectives, not a readiness score.

Snowflake AI Data Cloud Features and Architecture31% of the exam0 of 6 tried
Account Management and Data Governance20% of the exam0 of 3 tried
Data Loading, Unloading, and Connectivity18% of the exam0 of 3 tried
Performance Optimization, Querying, and Transformation21% of the exam0 of 4 tried
Data Collaboration10% of the exam0 of 3 tried

3 · Keep going