Home / Snowflake / Migration / Teradata to Snowflake
Teradata migration
Teradata to Snowflake migration, with every report reconciled
The SQL converts more easily than most teams expect. The real work is in BTEQ and load scripts, Teradata-specific table behavior, and proving the numbers match. We convert, move and reconcile in waves, with Teradata running until each wave is signed off.
Quick answer
How do you migrate from Teradata to Snowflake?
A Teradata to Snowflake migration inventories objects and scripts from DBQL logs, converts DDL and SQL with SnowConvert, rewrites BTEQ scripts, macros and stored procedures, exports history with Teradata Parallel Transporter and loads it with COPY INTO, then runs both systems in parallel and reconciles tables and reports before a wave-by-wave cutover. SET tables, primary indexes and case-insensitive comparisons need special care.
Conversion
Teradata features and their Snowflake equivalents
| Teradata | Snowflake | What to watch |
|---|---|---|
| BTEQ scripts | SQL run by an orchestrator, dbt, or Snowflake CLI scripts | Error handling such as .IF ERRORCODE and .GOTO must be rewritten |
| FastLoad, MultiLoad, TPT | Files to cloud storage, then COPY INTO or Snowpipe | Load scheduling and restart logic |
| SET tables | Standard tables (duplicates allowed) | Teradata silently drops duplicate rows; Snowflake keeps them unless loads deduplicate |
| Primary index, partitioned primary index | No indexes; micro-partitions and clustering keys | Large tables may need a clustering key on common filters |
| Unique primary index | Primary key declared but not enforced | Uniqueness must be enforced in the pipeline or tested with dbt |
| NOT CASESPECIFIC columns | Comparisons are case-sensitive by default | Use collation or UPPER() where Teradata matched case-insensitively |
| Macros | Views or stored procedures | Parameterized macros become procedures |
| Stored procedures (SPL) | Snowflake Scripting procedures | Cursors and error handlers need review |
| Volatile and global temporary tables | Temporary or transient tables | Session scope and cleanup |
| QUALIFY, SAMPLE | QUALIFY and SAMPLE supported | Usually converts directly |
| COLLECT STATISTICS | Not needed | Remove from scripts; Snowflake maintains metadata automatically |
Approach
How a Teradata to Snowflake migration runs
Inventory
Tables, views, macros, procedures, BTEQ and TPT scripts, scheduler jobs, and the reports and extracts that read from Teradata, using DBQL query logs to see what is actually used.
Wave plan
Group objects by business domain so each wave delivers something usable, and retire what nobody queries.
Convert
Automated conversion of DDL and SQL with Snowflake's SnowConvert, then engineers rewrite scripts, procedures and anything flagged.
Move history
Export with Teradata Parallel Transporter to compressed files, stage in cloud storage, and load with COPY INTO in parallel.
Keep in sync
Run converted loads in parallel or replicate changes so Snowflake stays current during the parallel run.
Reconcile
Row counts, column checksums and aggregates per table, then report-by-report comparison signed off by business owners.
Cut over and decommission
Switch consumers wave by wave, then retire Teradata jobs and, finally, the platform.
Why move
Why companies leave Teradata for Snowflake
Cost model. Teradata capacity is bought ahead of demand. Snowflake bills compute for the time warehouses run, so quiet periods cost little, provided warehouses are sized and suspended well. See Snowflake cost optimization.
Workload isolation. Loads, transformations and BI each get their own warehouse, so a heavy batch job no longer slows dashboards.
Less administration. No index or statistics maintenance, no space management and no hardware refresh cycles.
Deliverables
- Inventory and wave plan from DBQL usage
- Converted, tested SQL and scripts in your repository
- Reconciliation report for every table and key report
- Snowflake role model and warehouse plan
- Runbooks and decommission plan for Teradata
Contact us
Plan your Teradata to Snowflake migration
Tell us roughly how big your Teradata estate is and how many scripts and reports depend on it. A senior data architect will reply with an approach.
- A senior engineer reads every message
- Reply within one business day
- No obligation, and your details are used only to reply
Prefer the full form? Go to the contact page.
FAQ
Questions buyers ask us
How do you migrate from Teradata to Snowflake?
Inventory objects and scripts using DBQL logs, plan waves by business domain, convert DDL and SQL with SnowConvert and rewrite BTEQ and procedures, export history with Teradata Parallel Transporter and load with COPY INTO, run both systems in parallel, reconcile tables and reports, then cut over wave by wave.
Does Snowflake support Teradata SET tables?
No. Snowflake tables allow duplicate rows, so pipelines that relied on SET tables to drop duplicates must deduplicate explicitly.
Is Teradata SQL compatible with Snowflake?
Mostly. Standard SQL and QUALIFY convert directly. Teradata-specific syntax, date formatting, case-insensitive comparisons and BTEQ commands need conversion.
What replaces BTEQ in Snowflake?
SQL run by an orchestrator such as Airflow, dbt models, Snowflake Tasks or Snowflake CLI scripts, with error handling rewritten for the new tool.
How long does a Teradata to Snowflake migration take?
It depends on the number of scripts, procedures and reports more than on data volume. A DBQL-based inventory gives a reliable estimate and wave plan.
Next step
Tell us what you need to build or who you need to hire.
A 30-minute call with a senior architect. You leave with a scoped plan or a role profile, whether or not you work with us.