Best Data Migration Tools in 2026: Enterprise, Database, and Cloud Options Compared
Compare the best data migration tools in 2026 by job: cloud DMS services, managed ELT and CDC, with pricing and where each falls short.

The best data migration tools in 2026 depend on the job. If you're moving a database into a cloud once, that cloud's own service is the best choice (AWS, Azure, and Google Cloud each have one called Database Migration Service). If data keeps flowing into a warehouse, a managed ELT platform such as Erathos, Fivetran, or Matillion is a better fit. And if you need changes within seconds, a CDC tool like Estuary or Debezium wins.
Most "best data migration tools" lists rank all of these together, as if they did the same thing. In this guide we split them by job and cover how each tool charges and where it falls short. We also point out the 2026 changes that can break an older plan, like the Azure DMS classic retirement and the end of PowerCenter support.
One-time migration or continuous sync: which job do you have?
A data migration is either a one-time move, where you copy a database somewhere new and switch over, or a continuous sync, where data keeps flowing from a source to a destination for months or years. The tools for each job overlap less than most "best of" lists suggest.
A one-time move looks like this: an on-premises SQL Server goes to Azure SQL Managed Instance, or Oracle goes to PostgreSQL on AWS. The hard parts here are converting the schema and keeping the cutover short. You also have to prove that no data went missing. Once the old system is shut off, the tool's job is done. Cloud-provider services like AWS DMS and native dump tools are built for this.
A continuous sync looks different. Your production Postgres, your CRM, and your billing app all need to land in Snowflake or BigQuery every hour, and the sources never go away. Here you mostly care about which connectors a tool has and how fresh the data is. Since you'll be paying for years, what the bill looks like at month twelve matters too. Managed ELT platforms and CDC tools are built for this. (CDC means change data capture, where the tool reads every insert, update, and delete from the database log.)
The two jobs also map to two cutover strategies. A "big bang" move copies everything at once and needs a maintenance window. An incremental move runs in phases and keeps both systems in sync, so continuous sync lets you switch over gradually. For a warehouse move, that means the old system keeps running, and you only point dashboards at the new one once the numbers match.
Here's the decision flow we use:
[IMAGE 1: upload gtm-1359-img1.png here]
Cloud-provider migration services: AWS DMS, Azure DMS, and Google DMS
If you're moving a database into AWS, Azure, or Google Cloud, that cloud's own migration service is usually the cheapest and best-supported option. All three first copy a full snapshot, then keep copying changes until you switch over. Where they differ is the price and how much work they leave for you to do by hand.
AWS Database Migration Service (DMS) runs on a replication instance you pay for by the hour, on serverless capacity, or with a one-year Savings Plan. Hourly rates change by region, so check the AWS DMS pricing page for yours. If you go serverless, you pay for capacity in DCUs (one DCU is 2 GB of RAM). Moving data into DMS is free, and so is DMS Schema Conversion (you only pay for S3 storage). For Oracle or SQL Server to PostgreSQL, Schema Conversion can now use generative AI to convert up to 90 percent of schema objects automatically. You have to turn this setting on yourself.
Plan early for one limit of AWS DMS. It creates tables and primary keys, but it doesn't migrate secondary indexes, views, procedures, functions, or triggers. You have to move those yourself, with native tools if the engine stays the same, or with Schema Conversion if it changes.
Google Cloud Database Migration Service can move MySQL, PostgreSQL, SQL Server, and Oracle databases into Cloud SQL and AlloyDB. Same-engine migrations, such as PostgreSQL to Cloud SQL for PostgreSQL, are free. If you change engines, like Oracle to AlloyDB, Google bills you per byte of raw, uncompressed data in each migration job. It's serverless, so Google handles sizing the migration servers. You can also run a validation before the migration starts.
Azure Database Migration Service changed a lot this year. The classic version stopped supporting SQL Server scenarios after March 15, 2026, and Microsoft retired the Azure SQL Migration extension along with Azure Data Studio on February 28, 2026. SQL Server moves now run through Azure DMS in the portal, PowerShell, or the CLI. The portal version does not do assessments. It can do online (near-zero downtime) moves to Azure SQL Managed Instance and SQL Server on Azure VMs, but only offline moves to Azure SQL Database. If you have an older runbook that uses the classic service or Azure Data Studio, you'll need to rewrite it before you start.
The downside of all three is that each one only moves data into its own cloud. For pulling data from Salesforce, HubSpot, or Stripe, or for loading a warehouse in another cloud for years, the next group of tools fits better.
Managed ELT and enterprise integration: Fivetran, Matillion, Informatica, and Erathos
If data has to keep moving from many sources into a warehouse with no end date, you want a managed ELT or data integration platform. They cost more than a cloud migration service, but you get hundreds of prebuilt connectors, and they handle schema changes and scheduling. How they charge varies a lot, and two of the big names were merged or acquired in the last year.
Fivetran charges by monthly active rows (MAR), the number of distinct rows that change in a month. The free plan covers 500,000 MAR. On paid plans, Fivetran bills each connection at its monthly usage times a spend rate, with a $5 base charge for standard connections between 1 and 1 million MAR. Fivetran also bought Tobiko Data in September 2025 and completed its merger with dbt Labs on June 1, 2026. It is a strong choice for large enterprises that want one vendor for ingestion and transformation. Because each connection is billed on its own MAR, the bill is harder to predict, so it's worth estimating your busiest tables before you sign.
This is how Fivetran calculates the monthly cost of each connection:
[IMAGE 2: upload gtm-1359-img2.png here]
Matillion sells Developer, Teams, and Scale plans that you pay for in credits, and the dollar price of a credit is not public. In the current terms, an orchestration pipeline uses 1 credit per task hour, a transformation pipeline uses 3, and each developer user costs 70 credits a month. For CDC, Matillion runs agents on your own infrastructure that read the database logs, so your data and credentials stay with you. It's a good fit for teams that want to build pipelines visually on top of Snowflake, Databricks, or Redshift.
Informatica is now part of Salesforce, which completed the acquisition on November 18, 2025. Its cloud platform, IDMC, bills in Informatica Processing Units (IPUs) that you prepay each year, and the price per unit drops as you use more. CDC is part of a service now called Data Ingestion and Replication. If you still run PowerCenter on-premises, general support for PowerCenter 10.5.x ended on March 31, 2026. So for PowerCenter shops, the thing to migrate off in 2026 may be PowerCenter itself.
Qlik Talend has had no free desktop tool since Qlik retired Talend Open Studio on January 31, 2024. Qlik Talend Cloud comes in four editions, and you have to ask for a quote. Pricing is based on data volume, plus job runs and duration on the top two editions. Log-based CDC starts at the Standard edition. Qlik Replicate, formerly Attunity, is its tool for copying a database and keeping the new system in sync until cutover.
Erathos is our managed ELT platform for loading databases, SaaS apps, and files into a warehouse such as BigQuery, Snowflake, Redshift, or Databricks. It has over 100 connectors, and you can connect as many as you like. You pay a flat monthly price based on how many rows it writes to your warehouse. On monthly billing, Movement costs US$ 35 for 2 million rows with hourly updates, and Pro costs US$ 300 for 5 million rows with 5-minute updates and CDC. Yearly billing drops those to US$ 29 and US$ 250 a month. The free plan covers 1 million rows a month.
On Pro, CDC reads the PostgreSQL write-ahead log or the MySQL binlog. It can take an initial snapshot and then stream changes, which is what you want for an incremental migration. For other sources, Erathos uses cursor-based incremental syncs on a column like updated_at. You can also schedule a full reload every so often to fix drift. Erathos is a good fit if you want a predictable bill and want to set up a continuous pipeline quickly. If you need to convert an Oracle schema and cut over a production OLTP (transactional) database, AWS DMS or Azure DMS is the better tool.
This is the Erathos pricing page on monthly billing:
[IMAGE 3: upload gtm-1359-img3.png here]
Open-source and developer-first tools: Airbyte and dlt
Developer-first tools make sense if your team wants to write pipelines as code, or if you need to run the pipeline inside your own network. The two main options are Airbyte, a connector platform, and dlt, a Python library you run anywhere.
Airbyte has 700+ connectors, more than any other tool in this article. Its cloud has three pricing models: Standard is billed by data volume, Plus by credits, and Pro and Enterprise Flex by capacity, measured in "Data Workers." Paying for capacity helps when your volume swings a lot, because you pay for how many syncs can run in parallel instead of for rows. On the pricing calculator's default settings, Standard comes to $195 a month and Plus with 40 credits to $189. For a closer look at how it compares to us, see our Erathos vs Airbyte breakdown.
dlt (from dltHub) is an open-source Python library under the Apache 2.0 license. It loads data from REST APIs, SQL databases, cloud storage, and Python objects into a warehouse or lake, and it handles incremental loading and schema changes for you. You can run it in Airflow, on a serverless platform, or as a plain cron job. The library is free, but you still pay for compute and for the time your engineers spend on it.
Here's a dlt pipeline that copies an orders table from a SQL database into DuckDB and loads only rows with a newer updated_at on each run:
import dltfrom dlt.sources.sql_database import sql_databasedef main(): source = sql_database(credentials="sqlite:///source.db", table_names=["orders"]) source.orders.apply_hints( incremental=dlt.sources.incremental("updated_at"), primary_key="id", write_disposition="merge", ) pipeline = dlt.pipeline( pipeline_name="orders_pipeline", destination="duckdb", dataset_name="orders_data", pipelines_dir=".dlt/pipelines", ) pipeline.run(source) print(f"Rows loaded: {pipeline.last_trace.last_normalize_info.row_counts.get('orders', 0)}")if __name__ == "__main__": main()
We ran it once against a source table with 3 rows:
Rows loaded: 3
Then we added 2 new rows and updated 1 existing row in the source. The second run only picked up those 3 changed rows. Because it merges on id, the destination ended up with 5 rows, and the updated row was overwritten in place:
Rows loaded: 3
For production, we'd swap the connection string for Postgres, MySQL, or Oracle, and the destination for Snowflake or BigQuery. Because the incremental cursor reads a column, it misses hard deletes. Catching deletes takes log-based CDC.
Real-time CDC and database-native tools
Streaming CDC tools are the best fit when you need changes in seconds, including deletes. Native dump tools are the best fit for a same-engine copy you run yourself for free. Both do less than an ELT platform, and they do that one job well.
CDC tools read the database's own change log (the PostgreSQL write-ahead log, the MySQL binlog) instead of querying tables. That keeps load on the source low, and it catches the deletes that a cursor on updated_at misses. The main options:
- Estuary is a managed streaming platform. The cloud plan costs $0.50 per GB moved plus $100 per connector a month, and the developer plan is free up to 10 GB a month and 2 connectors. Because you pay by the GB, wide tables that change often cost the most.
- Debezium is open-source CDC that usually runs on Apache Kafka Connect. It has stable connectors for MySQL, PostgreSQL, SQL Server, Oracle, MongoDB, MariaDB, Db2, and Cassandra. Debezium Server streams changes straight to Kinesis, Pub/Sub, or Pulsar instead. Debezium captures the changes, and a sink or your own code loads them into a warehouse.
- Striim sells streaming CDC on usage or license pricing, starting at $0.50 per vCPU hour on the Azure Marketplace.
- Oracle GoldenGate is Oracle's own replication product. OCI GoldenGate, the managed version on Oracle Cloud, charges per OCPU hour. Oracle sells on-premises licenses per processor, and published list prices disagree, so ask Oracle for a quote.
This is Estuary's pricing page:
[IMAGE 4: upload gtm-1359-img4.png here]
For a same-engine copy, native tools are free:
- pg_dump and pg_restore copy a PostgreSQL database while other users keep reading and writing. The directory format is the only format that supports parallel dumps, so
pg_dump -Fd mydb -j 5 -f dumpdirdumps 5 tables at once and opens 6 connections. pg_dump has to be the same major version as the source server or newer. - pgloader moves MySQL, SQLite, SQL Server, Redshift, or PostgreSQL into PostgreSQL with one command and converts types along the way.
- MySQL Shell dump utilities add parallel threads and compression that mysqldump lacks. Consistency is guaranteed only for InnoDB tables.
Native tools take a point-in-time copy. Writes that land after the dump starts are not in it, so you either stop writes during the cutover or pair the dump with CDC to catch up.
Data migration tools compared side by side
The table below puts the main data migration tools side by side, using each vendor's public pricing model as of October 2026. "Per connector" in the CDC column means support depends on the source, so check the connector page for your database.
Tool | Category | Best for | Pricing model | CDC | Deployment |
|---|---|---|---|---|---|
AWS DMS | Cloud provider | Moving a database into AWS | Instance hours, serverless DCUs, or Savings Plan | Yes | Managed in AWS |
Google Database Migration Service | Cloud provider | MySQL, PostgreSQL, SQL Server, Oracle into Cloud SQL or AlloyDB | Free same-engine, per byte across engines | Yes | Serverless in Google Cloud |
Azure DMS | Cloud provider | SQL Server into Azure SQL | Azure pricing page | Online moves to SQL Managed Instance and SQL Server on VMs | Managed in Azure |
Fivetran | Managed ELT | Large enterprises that want ingestion and dbt in one vendor | MAR per connection, free up to 500,000 MAR | Per connector | SaaS |
Matillion | Managed ELT | Visual pipelines on Snowflake, Databricks, Redshift | Credits per task hour and per developer | Yes, self-hosted agents | SaaS with hybrid agents |
Informatica IDMC | Enterprise integration | PowerCenter shops and large governed estates | Prepaid IPUs | Yes | SaaS |
Qlik Talend Cloud | Enterprise integration | Mainframe and SAP sources | Quote, by volume and job runs | Standard edition and up | Cloud, client-managed, or hybrid |
Erathos | Managed ELT | Continuous ingestion into a warehouse with a flat bill | Flat plans by rows, US$ 0 to US$ 300 a month | PostgreSQL and MySQL on Pro | SaaS |
Airbyte | Connector platform | Biggest connector catalog | Volume, credits, or capacity | Per connector | Cloud |
dlt | Python library | Pipelines as code | Free, Apache 2.0 | Cursor-based incremental | Anywhere Python runs |
Estuary | Streaming CDC | Real-time replication | $0.50 per GB plus $100 per connector | Yes | Managed cloud |
Debezium | Open-source CDC | Change events into Kafka or a stream | Free | Yes | Self-hosted |
pg_dump, pgloader | Native tools | Same-engine copies or moves into PostgreSQL | Free | pgloader only | You run it |
No single tool wins every row. The cloud services win on price for a database cutover into their own cloud, and the ELT platforms win once the job has many sources and no end date.
How do you run a migration without losing data?
A safe migration runs in four steps: assess the source, convert the schema, copy and validate the data, then cut over only when the numbers match.
- Assess the source. We list every table, view, procedure, trigger, and job that touches the database, with row counts and the busiest tables. Google DMS can run a validation before the migration starts. Azure DMS in the portal does not do assessments, so Azure moves need a separate tool for this step.
- Convert the schema. On a same-engine move, native dumps carry the schema with them. For an engine change, AWS DMS Schema Conversion or a similar tool converts most of it, and someone fixes the rest by hand. Secondary indexes, views, and procedures need their own step, because AWS DMS only creates tables and primary keys.
- Copy and validate. The full load copies everything once, then CDC keeps changes flowing. We compare row counts, sums, and row hashes between source and target for every table.
- Cut over. We stop writes to the source, let CDC catch up, run a final validation, and switch the applications. The source stays read-only for a while so we can roll back.
Here is the flow, with the loop for when the numbers don't match:
[IMAGE 5: upload gtm-1359-img5.png here]
Validation catches data that went missing without an error. These three tools do the checks:
- AWS DMS data validation compares each source row with its target row after the full load, then checks CDC changes as they arrive. It needs a primary key or unique index on each table, and it stops after 10,000 failed or suspended records. It also adds query load to both databases.
- Google's Data Validation Tool is an open-source Python CLI that compares tables across different databases. It checks counts, sums, and other column stats, plus SHA256 row hashes and schemas. It supports Oracle, PostgreSQL, MySQL, SQL Server, BigQuery, Snowflake, Redshift, and Teradata, though Google does not officially support it.
- datafold data-diff shows up in older guides, but Datafold archived it on May 17, 2024 and no longer develops it.
For a warehouse move, also check that the reports match. A dashboard that shows the same revenue on the old and new warehouse is the test business users trust. Our guide to migrating from Redshift to BigQuery walks through one of these moves end to end.
Which data migration tool should you pick?
The right tool depends on your situation:
- Same-engine database move into AWS, Azure, or Google Cloud: that cloud's migration service is the cheapest option. Google DMS is free for same-engine moves, and AWS DMS Schema Conversion is free too.
- Engine change, such as Oracle to PostgreSQL: AWS DMS with Schema Conversion or Google DMS fits best. Plan extra time for the objects the tool won't move.
- Same-engine copy you run yourself: pg_dump with parallel jobs, pgloader, or MySQL Shell. They are free, and your data stays on your own servers.
- Many SaaS and database sources into one warehouse, with no end date: a managed ELT platform. Erathos fits when you want a flat monthly bill by rows and CDC for PostgreSQL and MySQL. Fivetran fits large enterprises that want ingestion and dbt from one vendor.
- Off PowerCenter or another legacy enterprise stack: Informatica IDMC or Qlik Talend Cloud stay close to what you already run.
- Pipelines as code inside your own network: dlt works well, and Airbyte helps when you need its larger connector catalog.
- Sub-minute replication with deletes: Estuary as a managed service, or Debezium if you already run Kafka.