Snowflake
Stages: Internal, External & Named Stages
Understand where and how files are staged before loading into Snowflake tables.
A stage is a location — either inside Snowflake or in external cloud storage — where data files are stored before being loaded into (or after being unloaded from) tables. Stages are the entry/exit point for all bulk data movement in Snowflake.
A stage is like a loading dock next to a warehouse — goods (files) are dropped there first, inspected/labeled (file format), and then moved onto the warehouse shelves (tables) in a controlled, repeatable way.
Key Concepts
1
Internal stages are storage locations managed entirely by Snowflake and come in three flavors: the user stage (@~), automatically available to each user for personal file staging; the table stage (@%table_name), automatically tied to a specific table; and named internal stages, explicitly created objects that can be shared across users and roles with fine-grained permissions.
Internal stagesuser stage@~table stage@%table_name
2
External stages reference files already sitting in a cloud storage bucket you control (S3, Azure Blob, GCS) via a named external stage object, which stores the URL and credentials/integration needed to access it. This lets Snowflake read directly from your existing data lake without first copying files into Snowflake-managed storage.
External stagesnamed external stage
3
File format objects (specifying CSV delimiters, JSON handling, compression, etc.) are typically associated with stages to standardize how files are parsed during COPY INTO operations, reducing repetition across load statements.
COPY INTO