Skip to content

Carga de datos ​

Cargar datos en Snowflake consiste en mover archivos desde una ubicacion de entrada hacia tablas. La ubicacion puede ser un stage interno de Snowflake o un stage externo en S3, Azure Blob Storage o Google Cloud Storage.

Flujo basico ​

txt
archivo -> stage -> file format -> COPY INTO -> tabla

Piezas principales:

  • Stage: donde estan los archivos.
  • File format: como interpretar esos archivos.
  • Tabla destino: estructura final o intermedia.
  • COPY INTO: comando de carga.

Carga con stage interno ​

Crear tabla destino:

sql
CREATE TABLE analytics_db.raw.events (
  event_id STRING,
  event_type STRING,
  user_id STRING,
  created_at TIMESTAMP_NTZ
);

Crear formato CSV:

sql
CREATE FILE FORMAT analytics_db.raw.csv_with_header
  TYPE = CSV
  FIELD_OPTIONALLY_ENCLOSED_BY = '"'
  SKIP_HEADER = 1
  NULL_IF = ('', 'NULL', 'null');

Crear stage interno:

sql
CREATE STAGE analytics_db.raw.events_stage
  FILE_FORMAT = analytics_db.raw.csv_with_header;

Subir archivo con SnowSQL:

sql
PUT file://events.csv @analytics_db.raw.events_stage AUTO_COMPRESS = TRUE;

Cargar:

sql
COPY INTO analytics_db.raw.events
FROM @analytics_db.raw.events_stage
FILE_FORMAT = analytics_db.raw.csv_with_header;

Validar antes de cargar ​

Antes de insertar datos definitivamente, puedes validar:

sql
COPY INTO analytics_db.raw.events
FROM @analytics_db.raw.events_stage
FILE_FORMAT = analytics_db.raw.csv_with_header
VALIDATION_MODE = RETURN_ERRORS;

Tambien puedes revisar archivos en un stage:

sql
LIST @analytics_db.raw.events_stage;

Carga desde stage externo ​

La idea es la misma, pero el stage apunta a almacenamiento cloud:

sql
CREATE STAGE analytics_db.raw.s3_events_stage
  URL = 's3://mi-bucket/events/'
  FILE_FORMAT = analytics_db.raw.csv_with_header;

En produccion no conviene incrustar credenciales directamente. Lo normal es usar integraciones de almacenamiento gestionadas por Snowflake y permisos cloud bien acotados.

Buenas practicas ​

  • Carga primero en raw; transforma despues.
  • Define FILE FORMAT reutilizables y versionados.
  • Valida errores antes de ejecutar cargas grandes.
  • Guarda metadatos de ingesta: nombre de archivo, fecha de carga, lote y fuente.
  • Usa archivos de tamano razonable; muchos archivos diminutos penalizan la carga.
  • Separa stages por fuente o dominio.

Errores comunes ​

  • Cargar directamente en tablas finales.
  • No definir tipos de datos antes de cargar.
  • Ignorar filas rechazadas.
  • Mezclar formatos distintos en el mismo stage.
  • No registrar que archivo genero cada fila.

Ejercicio ​

  1. Crea una tabla raw.customers.
  2. Define un FILE FORMAT para CSV con cabecera.
  3. Crea un stage interno.
  4. Escribe el COPY INTO.
  5. Anade columnas tecnicas como source_file y loaded_at usando metadatos de carga.