← Back to Tutorials

20. Load from S3

External Stage

-- Create external stage for S3
CREATE OR REPLACE STAGE s3_stage
  URL = 's3://my-bucket/snowflake-data/'
  STORAGE_INTEGRATION = s3_integration
  FILE_FORMAT = (TYPE = CSV SKIP_HEADER = 1);

-- List files
LIST @s3_stage;

-- Load from external stage
COPY INTO my_table
FROM @s3_stage/
PATTERN = '.*\.csv'
ON_ERROR = 'SKIP_FILE';

AWS Integration

-- Create storage integration (ACCOUNTADMIN)
CREATE STORAGE INTEGRATION s3_integration
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456:role/snowflake-role'
  STORAGE_ALLOWED_LOCATIONS = ('s3://my-bucket/');
  
DESC STORAGE INTEGRATION s3_integration;
-- Use the AWS_IAM_USER_ARN and EXTERNAL_ID to set up trust

Loading from Azure / GCP

Similar patterns for Azure Blob (AZURE_INTEGRATION) and GCS (STORAGE_PROVIDER = GCS).

✏️ Exercise: Set up an external S3 stage and load data from a public S3 bucket. Verify data with SELECT.