Skip to content

Bringing structured, semi-structured, and unstructured files in through stages and file formats

Snowflake ingests structured and semi-structured data (CSV, JSON, Parquet, Avro, ORC, XML) primarily via the COPY INTO <table> command, which reads staged files using a named or inline FILE FORMAT object to define parsing rules. Understanding stage types, file format options, and how Snowflake maps semi-structured data into VARIANT/ARRAY/OBJECT columns is essential for reliable, efficient loading.

1 · Learn the must-know

  • COPY INTO requires files to be staged first (internal user/table/named stage or external stage on S3/Azure/GCS) before loading into a table.
  • A FILE FORMAT object (named or inline) specifies TYPE and parsing options like FIELD_DELIMITER, SKIP_HEADER, COMPRESSION, STRIP_OUTER_ARRAY, and ON_ERROR, and can be reused across multiple COPY commands.
  • Semi-structured formats (JSON, Avro, ORC, Parquet, XML) are typically loaded into a single VARIANT column, or can be flattened into relational columns during load using COPY INTO with explicit column mapping and FLATTEN/PARSE_JSON in a SELECT.
  • COPY INTO tracks load history (load metadata) per file per table for 64 days by default, preventing accidental reloading of the same file unless FORCE=TRUE is specified.
  • ON_ERROR options (CONTINUE, SKIP_FILE, SKIP_FILE_<n>, ABORT_STATEMENT) control how COPY INTO handles malformed records, and validation can be pre-checked using VALIDATION_MODE or the VALIDATE table function.
  • Parquet and ORC files can leverage columnar metadata for efficient partial loads, and Snowflake auto-detects schema for these formats when using MATCH_BY_COLUMN_NAME or schema detection with CREATE TABLE ... USING TEMPLATE.

2 · Check your understanding

Check this objectiveFree · always available

A Data Engineer maintains a daily load job that reads CSV files into table RAW.ORDERS using a COPY INTO statement. Some files periodically contain rows with an unexpected number of fields because of an upstream export bug. Every well-formed row in a file must still load, each malformed row must be skipped without failing the rest of the file, and the rejected rows must later be reviewable through the copy history. Which COPY INTO configuration meets this requirement?

Your objective map0 tried · 0 answered correctly · 22 untouched

What you have tried across SnowPro Advanced Data Engineer's objectives, not a readiness score.

Data Movement28% of the exam*0 of 7 tried
Performance Optimization19% of the exam*0 of 3 tried
Storage and Data Protection14% of the exam*0 of 3 tried
Data Governance14% of the exam*0 of 2 tried
Data Transformation25% of the exam*0 of 7 tried

* Our estimate. Snowflake publishes no section weights.

3 · Keep going