Snowflake's standard CSV load process involves stages, COPY INTO commands, file format definitions, and SQL. QueryFlow handles all of this through a drag-and-drop pipeline. Point at a CSV, point at a Snowflake table, hit Run.
Quick answer: QueryFlow loads CSV files into Snowflake on macOS through Visual ETL pipelines. Configure a CSV source (local file or SFTP), configure a Snowflake destination (with PAT authentication), map fields with AI Map, optionally schedule. Behind the scenes QueryFlow uses Snowflake's COPY INTO via internal stages. Handles files up to millions of rows. $299.99/year.
Standard Snowflake CSV loading requires multiple SQL commands: CREATE FILE FORMAT, PUT to upload to internal stage, COPY INTO to load from stage to table, optionally CREATE TABLE first if the destination doesn't exist. Each step has its own quirks (file format escaping, COPY error handling, NULL value mapping). For developers loading CSVs occasionally, this is a lot of friction.
Visual ETL pipeline: drag CSV source card onto canvas, point at file. Drag Snowflake destination, pick database/schema/table (or create new). Click the connecting line, AI Map auto-detects column matches. Run. Behind the scenes QueryFlow handles file format detection, type inference, internal stage upload via Snowpipe-style PUT, and COPY INTO with appropriate error handling. The complexity is hidden, not removed.
Common workflow: a vendor delivers a CSV daily to an SFTP folder, you need to load it into Snowflake every morning. QueryFlow setup: configure SFTP source pointing at the folder, configure Snowflake destination, schedule daily at 7 AM. Each morning the pipeline grabs new files, loads them, archives the original. No infrastructure required beyond your Mac.
QueryFlow's CSV source auto-detects types (string, integer, decimal, date, timestamp, boolean) from sample rows. You can override types per column. Common edge cases handled: quoted strings with embedded commas, newlines within quoted fields, different date formats per column, NULL representations like 'NULL' string or empty fields, BOM markers, character encoding (UTF-8, UTF-16, Latin-1). For pathological CSV files, you can use a Flow Book to clean the file with pandas before loading.
Snowflake COPY INTO can fail on bad rows. QueryFlow's pipeline lets you configure failure behavior: stop on first error (default for small loads), continue on errors with bad rows captured for review (for large loads where you accept some loss), or use ON_ERROR=SKIP_FILE to skip files entirely. Failed rows surface in the Observatory dashboard.
On an M2 MacBook Pro with a Snowflake X-Small warehouse: 100K row CSV load: ~30 seconds end-to-end. 1M row CSV load: ~3-4 minutes. 10M row CSV load: ~30-40 minutes. The bottleneck is rarely your Mac — Snowflake warehouse size and concurrent operations on the warehouse matter more.
For very large CSV loads (100M+ rows), split the file using shell tools (split -l 10000000 huge.csv) and load chunks in parallel by running multiple QueryFlow pipelines simultaneously. For truly massive workloads, Snowpipe (Snowflake's continuous ingestion) remains the right tool, but for the 95% of CSV loads under 10M rows, QueryFlow is dramatically simpler.
Yes. CSV loads use PUT (upload to internal stage) followed by COPY INTO (load from stage). This is the recommended Snowflake pattern for bulk loads.
v1.5 uses Snowflake internal stages for CSV uploads (QueryFlow creates and manages them). External stage support (your S3, your Azure Blob) is on the roadmap.
Excel .xlsx support is in progress (v1.4 in-progress feature on the roadmap). For now, save your Excel file as CSV before loading. Most spreadsheet apps export to CSV cleanly.
Yes. CSV columns containing JSON strings can be loaded into Snowflake VARIANT columns with PARSE_JSON applied automatically. For more complex transformations on JSON data, use a Flow Book to preprocess.
Yes. Point the CSV source at a folder (local or SFTP) and QueryFlow loads all matching files in one operation. The folder source supports wildcard patterns for filtering.
14-day free trial. Load your first CSV in under 5 minutes and never write COPY INTO syntax again.