Skip to content
Adapters

Db2 to Snowflake migration tools and replication compared on what actually lands

Eleven ways to move IBM Db2 data into Snowflake, judged on the rows that arrive. Snowflake's own converter turns DECFLOAT procedure variables into a type that cannot hold 10, Snowflake DECFLOAT rejects values Db2 accepts, and there is no first-party Db2 feed. All three are in the vendors' documentation.

The live demo needs no card, and Starter is $49 a month.

Field mapping auto-plugged · tap a port to rewire

5 sample records ready

Vendor documentation read 5 October 2026

Which Db2 to Snowflake migration tool should you use?

Use SnowConvert for the schema and SQL, because it is Snowflake's own converter and it reads Db2. It does not move data, and Snowflake has no Openflow connector for Db2, so pick the data path separately: IBM Data Replication or Qlik Replicate for log-based capture at volume, Fivetran or a scheduled sync for typed tables during a long cutover. Before anything loads, fix three converter defaults: DECFLOAT variables, GRAPHIC columns and XML.

Rows of dark server cabinets and a tape library on a raised data center floor, seen from directly above
Db2 stays on the floor, analytics moves synced

This route sits under our data migration tools guide. If PostgreSQL is the other target on the shortlist, the same source with a different set of type traps is compared on Db2 to PostgreSQL migration tools.

Eight documented behaviors that change your data between Db2 and Snowflake

Each row sets a tool's documentation, or a type limit, against what IBM or Snowflake say about the same thing. The first one is Snowflake's converter disagreeing with Snowflake's own numeric rules, and it is the row to read if your Db2 code does money arithmetic in DECFLOAT.

Tool and setting What the documentation says Why it matters to a buyer What we would ship
SnowConvert, DECFLOAT in procedures DECFLOAT columns stay DECFLOAT, but parameters and local variables "convert to NUMBER(38, 37)" with warning SSC-FDM-DB0002. Snowflake's NUMBER rule allows precision minus scale digits left of the point. 38 minus 37 is one, so a balance of 10.00 does not fit. NUMBER(38,s) sized to the data
Snowflake DECFLOAT, special values Snowflake DECFLOAT "doesn't support" NaN, inf or -inf. IBM documents INFINITY, NAN and SNAN as valid Db2 DECFLOAT values. A Db2 table that ever stored an undefined result holds a value the target column cannot take. The row fails or arrives as NULL. Count them on Db2 first
SnowConvert, GRAPHIC The Db2 data type reference maps GRAPHIC and VARGRAPHIC to BINARY. Graphic strings are double-byte character text such as names. As BINARY they no longer compare, sort or search as text. VARCHAR
SnowConvert, XML XML maps to VARIANT with warning SSC-EWI-0036, "data type converted to another type". Every XQuery or XMLTABLE call against that column needs a rewrite, and the warning is easy to lose among hundreds. VARIANT, queries listed
AWS DMS, target Snowflake is not in the DMS list of target endpoints. S3, Redshift, PostgreSQL and others are. A DMS plan into Snowflake is really DMS to S3 plus a COPY or Snowpipe job you build, own and monitor separately. Count the second pipeline
AWS DMS, DECFLOAT changes The DMS Db2 LUW page: "changes to DECFLOAT columns are ignored during ongoing replication." The full load is right. After that one column freezes while the rest of the row stays current and the task reports healthy. Reconcile DECFLOAT at cutover
Openflow, Db2 source The Openflow connector list has database CDC for MySQL, PostgreSQL, Oracle, SQL Server, MongoDB and BigQuery. Db2 is not listed. Teams that assume Snowflake ships a native Db2 feed find the first-party help stops at code conversion. Pick a data tool early
Db2 TIMESTAMP(12) IBM: fractional seconds from 0 to 12, default 6. Snowflake timestamps keep at most 9 digits, nanoseconds. Columns at 10 to 12 digits lose the tail. Snowflake does not enforce unique keys, so values that collapse together load without any error. TIMESTAMP_NTZ(9), keys checked

The first row is worth spelling out. Snowflake's numeric documentation says you cannot load a value into a NUMBER column "if the number of digits to the left of the decimal point exceeds the precision of the column minus its scale." NUMBER(38, 37) leaves room for exactly one. Converted code compiles and passes a test with small values, then fails on the first real balance. If the plan is to keep Snowflake current from Db2 rather than copy once, the capture options are compared in change data capture tools.

Db2 types in Snowflake, and the wrong target a careless map picks

Db2 and Snowflake agree on more than most pairs. Both fold unquoted names to upper case, both keep empty strings apart from NULL by default, and SMALLINT, INTEGER, BIGINT, DATE, VARCHAR and BOOLEAN cross unchanged. These twelve are where the obvious choice, or the one a tool makes for you, is wrong.

Db2 type Right Snowflake target Common wrong target
DECFLOAT(16), (34) column DECFLOAT FLOAT, about 15 binary digits
DECFLOAT variable in SQL PL NUMBER(38,s) sized to data NUMBER(38,37), one digit before the point
DECIMAL(p,s) NUMBER(p,s) NUMBER(38,0), which drops the cents
GRAPHIC, VARGRAPHIC VARCHAR BINARY, so names stop being text
CHAR FOR BIT DATA BINARY VARCHAR, which runs bytes through UTF-8
CLOB, DBCLOB up to 2 GB VARCHAR, 128 MB max VARCHAR at the 16 MB default
BLOB up to 2 GB BINARY, 64 MB max Large values left out of scope
TIMESTAMP(10) to (12) TIMESTAMP_NTZ(9), keys checked Any TIMESTAMP, digits lost quietly
TIMESTAMP, local time TIMESTAMP_NTZ TIMESTAMP_LTZ, shifted by session zone
XML VARIANT, queries rewritten VARCHAR, no structure at all
Identity column NUMBER with IDENTITY START above max IDENTITY starting at 1
Primary and unique keys Declared, plus a dedupe check Trusted to reject duplicates

Two rows are new since 2025. Snowflake now has a native DECFLOAT with 38 significant digits, so a Db2 DECFLOAT(34) column can land exactly instead of being squeezed into FLOAT or a fixed NUMBER. It comes with limits worth reading before you rely on it: no NaN or infinity, no use in clustering keys, hybrid tables, Iceberg tables or Snowpark, and minimum driver versions such as JDBC 3.27.0 and Python connector 3.14.1. A loader on an older driver is the thing to test first. How the ongoing feed is kept current and what it costs is covered in our guide to Db2 to Snowflake replication tools and CDC cost.

Db2 to Snowflake migration tools and replication compared

Billing units rather than price tags, because almost nobody on this list publishes one. Ispirer publishes license prices by term and edition, our plans are on the pricing page, and the rest are quoted or metered in ways that depend on your data. Where a tool is wrong for a job, the last column says so, including for us.

Tool Approach Best for Billing unit What to watch
SnowConvert AI Snowflake's converter for Db2 DDL, SQL and procedures The code half of any Db2 exit to Snowflake Provided by Snowflake Moves no data, review the type warnings
IBM Data Replication Log-based capture from Db2 LUW, i and z/OS, Snowflake as a target Mainframe and high-volume live feeds IBM license, quoted Its own servers and skills to run
Qlik Replicate Log-based CDC from Db2 LUW into Snowflake Enterprises already on Qlik Quoted license Needs SYSADM or DBADM with DATAACCESS
AWS DMS Full load and CDC from Db2 LUW into S3, then COPY or Snowpipe AWS shops with S3 staging already Instance hours or serverless capacity No Snowflake target, DECFLOAT changes ignored
Fivetran Managed Db2 for LUW and Db2 for i connectors Teams already running Fivetran Monthly active rows Bill grows with change volume
CData Sync Scheduled Db2 replication into Snowflake Teams wanting a self-hosted sync product Subscription by edition Check how DECFLOAT is typed
Airbyte IBM Db2 source with full refresh and incremental syncs Teams running Airbyte already Self-hosted, or cloud credits Marketplace support level
Ispirer Schema, data and code conversion for LUW and z/OS to Snowflake Large SQL PL estates with a services budget Published per-term licenses, custom estimates Review time drives the real cost
SQLines Converts Db2 DDL, views and queries to Snowflake Script-heavy schema conversion Licensed tools, quoted Code only, plan data separately
ingestr Open source CLI copying Db2 tables, incremental by key An engineer comfortable owning scripts Open source, no license fee You run, schedule and monitor it
Adapters Declared column mapping, incremental sync, per-record logs Typed Snowflake tables fed from Db2 on a flat bill Flat monthly from $49, no per-row overage fees No SQL PL conversion, no z/OS log capture

The split to notice is code against data. SnowConvert, Ispirer and SQLines convert what Db2 runs. IBM Data Replication, Qlik, Fivetran, CData, Airbyte and we move what Db2 stores. Most projects need one from each group, and the budget for the pair is laid out in what a data migration really costs. For the same warehouse fed from another commercial engine, compare Oracle to Snowflake migration tools.

Six numbers to know before you sign anything

38 minus 37

Digits left of the decimal point in the NUMBER(38, 37) SnowConvert gives DECFLOAT procedure variables. One digit, so 10.00 does not fit.

SnowConvert Db2 reference and Snowflake numeric types, read 5 Oct 2026

38 vs 34

Significant digits Snowflake DECFLOAT holds, against the 34 of the largest Db2 DECFLOAT. Table columns fit exactly.

Snowflake numeric types and IBM Db2 docs

3 vs 0

Special DECFLOAT values Db2 accepts (INFINITY, NAN, SNAN), against the number Snowflake DECFLOAT accepts.

IBM Db2 docs and Snowflake numeric types, read 5 Oct 2026

2 GB vs 128 MB

Largest Db2 CLOB value, against Snowflake's VARCHAR maximum. The default when no length is given is 16 MB.

IBM Db2 docs and Snowflake string types

0

Openflow connectors for Db2. The first-party database list covers MySQL, PostgreSQL, Oracle, SQL Server, MongoDB and BigQuery.

Snowflake Openflow connectors list, read 5 Oct 2026

30 Apr 2027

End of base support for Db2 11.5 on Linux, UNIX and Windows, all editions except Base Edition. Extended support runs to 30 April 2031.

IBM Db2 Distributed end of support dates

Eight ways this migration goes wrong while every check stays green

Snowflake accepts almost anything you give it and enforces only NOT NULL among its declared constraints. That makes loads forgiving and mistakes quiet. Each row below is a value that is legal on both sides and means something different after it lands.

The failure What you see What is actually happening
Procedures fail in production Converted code compiles A DECFLOAT variable became NUMBER(38, 37) and the first value of 10 or more raised an overflow.
A few rows never arrive Load reports a small reject count Db2 held INFINITY or NAN in a DECFLOAT column, and Snowflake DECFLOAT has no such value.
One column goes stale DMS task healthy DMS ignores changes to DECFLOAT columns during ongoing replication, so only those values freeze.
Customer search breaks Names present but unreadable GRAPHIC columns landed as BINARY, so LIKE, UPPER and joins on name stop working.
Duplicate rows appear Row count slightly high Snowflake does not enforce primary or unique keys, so a replayed batch or a rounded timestamp key loads twice.
Long documents cut off Load errors on a handful of rows A CLOB above the column length, often the 16 MB default, did not fit the VARCHAR it was given.
Mainframe writes missing Full load completed Db2 for z/OS through DMS is full load only. Everything written after the snapshot never arrives.
Times shift by hours Dashboards look slightly off Db2 local timestamps loaded into TIMESTAMP_LTZ and were read back in each user's session time zone.

Four of the eight are fixed in the DDL before the first row moves. The DECFLOAT replication gap and the mainframe snapshot are tool choices, and duplicates are a merge-logic decision. If Snowflake is one of several warehouses on the table, the loading side is compared on Snowflake ETL tools.

Six steps that decide whether this migration works

Step 1

Confirm platform and version

Run db2level and say which product it is: Db2 LUW, Db2 for i or Db2 for z/OS. Each has a different log and a different short list of tools that can read it.

Step 2

Inventory the risky types

One query on SYSCAT.COLUMNS lists every DECFLOAT, GRAPHIC, FOR BIT DATA, LOB, XML and long TIMESTAMP column. Add a count of INFINITY and NAN values. That list is the real scope.

Step 3

Run SnowConvert, then read the warnings

Accept the one-to-one mappings and change three defaults by hand: GRAPHIC to VARCHAR, DECFLOAT variables to a NUMBER sized to the data, and every XML column's queries.

Step 4

Choose the data path

A one-time copy can go through cloud storage and COPY. A long cutover needs log capture or an incremental sync on a timestamp or key, with the DBA tickets for archive logging raised in week one.

Step 5

Full load, then keep Snowflake current

Load history once, then follow changes until the switch. Merge on the declared key and dedupe in the same statement, because Snowflake will not reject a duplicate for you.

Step 6

Reconcile values, not counts

Compare SUM on every numeric column, MIN and MAX on every timestamp and a hash of every key. Run the DECFLOAT sums again on cutover day if DMS carried the changes.

Step five is where a subscription earns its keep or does not. If the move is one weekend, files and COPY do it and you are done. If Db2 keeps feeding Snowflake for months while reports are rewritten, you need the same mapping running every few minutes with DECFLOAT kept exact, a merge on the declared key and a log of every record, which is what a flat Adapters plan covers with no per-row overage fees.

Why US teams fund this project

Analytics off the system of record

Reporting queries are moved off the production Db2 instance so month-end close stops competing with dashboards for the same CPU.

IBM i ERP into a cloud warehouse

Manufacturers and distributors keep the ERP on Db2 for i and need orders, inventory and shipments in Snowflake every few minutes for planning.

Retiring an on-prem Db2 warehouse

A Db2 Warehouse or Netezza-era estate is replaced by Snowflake, with the SQL rewritten once and the feeds rebuilt into the new target.

Beating the Db2 11.5 deadline

Base support for 11.5 ends 30 April 2027. Moving analytics first shrinks what the remaining Db2 instance has to do and what an upgrade has to cover.

Mainframe stays, data moves

Banks and insurers keep Db2 for z/OS as the system of record and send a steady, audited copy of account or policy data to Snowflake.

Running both during a long cutover

SQL PL and report rewrites take a quarter, so Db2 keeps feeding Snowflake while each report is checked against the old one.

Five jobs where you should not pick us

A comparison page that never says the competition wins is an advert. These are the cases where something else on this page is the right answer.

  • You need log-based capture from Db2 for z/OS at mainframe volumes. IBM Data Replication and the replication vendors built around the z/OS log are the right class, and our scheduled sync is not.
  • The project is mostly SQL PL procedures and report SQL. That is code conversion. SnowConvert, Ispirer or SQLines are built for it, and we do not convert procedural code at all.
  • You already run Fivetran or Qlik with a Db2 source and the bill is acceptable. Adding a Snowflake destination to a pipeline your team operates is less work than adopting anything new.
  • This is a single weekend copy with no ongoing sync. Unload files, cloud storage and COPY do it, and a subscription adds nothing once the data is in.
  • You need sub-second latency from a Db2 commit to a Snowflake row. Streaming replication built for that will beat our scheduled sync.

Four questions to ask any vendor on this list

Question 01

Which Db2 platforms do you read, and how?

LUW, IBM i and z/OS are three products with three logs. Ask for exact versions, whether change capture works on each or only a full load, and what database authority your user needs.

Question 02

What lands for a DECFLOAT column?

The fastest question on this route. A good answer is Snowflake DECFLOAT or a correctly sized NUMBER in both the load and the ongoing sync, plus a plan for INFINITY and NAN.

Question 03

How do you handle duplicates?

Snowflake does not enforce primary keys. Ask whether the tool merges on a declared key, what happens when a batch replays, and how you would find a duplicate if one got through.

Question 04

What does it cost when change volume doubles?

Rows, credits and capacity all grow with change. Ask for the bill at twice today's volume and in the month of the initial load, which is often the most expensive month of the contract.

Questions buyers ask about Db2 to Snowflake migration

How do I migrate from Db2 to Snowflake?
Convert the schema with SnowConvert or another converter, then correct the DDL: DECFLOAT stays DECFLOAT in tables, GRAPHIC becomes VARCHAR rather than BINARY, and timestamps above nine digits are checked. Run a full load through cloud storage, keep Snowflake current until cutover, and reconcile on sums and hashes rather than row counts.
What is the best Db2 to Snowflake migration tool?
It depends on the half of the job. SnowConvert, Snowflake's own converter, handles schema and SQL. For data, IBM Data Replication and Qlik Replicate read the Db2 log and write to Snowflake, Fivetran and CData sync it on a schedule, and a declared-mapping tool fits a steady sync of typed tables during a long cutover.
How do I replicate Db2 to Snowflake?
Use a log-based capture tool or an incremental sync. Log-based capture from Db2 LUW needs a recoverable database (LOGARCHMETH1 or LOGARCHMETH2 on) and DATA CAPTURE CHANGES on each table. IBM Data Replication and Qlik Replicate both list Snowflake as a target. An incremental sync on a timestamp or key column needs no log access at all.
Does SnowConvert support IBM Db2?
Yes. SnowConvert AI has an IBM Db2 translation reference covering data types and SQL. Most types map one to one. Its documentation maps GRAPHIC and VARGRAPHIC to BINARY, XML to VARIANT with a warning, and converts DECFLOAT procedure parameters and local variables to NUMBER(38, 37), so review those three before you accept the output.
Does Snowflake support DECFLOAT?
Yes. Snowflake DECFLOAT stores numbers exactly with up to 38 significant digits and an exponent range of -16383 to 16384, which covers Db2 DECFLOAT(34). It does not accept NaN or infinity, cannot be used in clustering keys, hybrid or Iceberg tables, or Snowpark, and needs recent client drivers such as JDBC 3.27.0.
Can AWS DMS migrate Db2 to Snowflake?
Not directly. Snowflake is not in the AWS DMS list of target endpoints, so the usual path is Db2 to Amazon S3 through DMS, then COPY or Snowpipe into Snowflake. DMS also documents that changes to DECFLOAT columns are ignored during ongoing replication and that Db2 for z/OS is full load only.
Is there a Snowflake Openflow connector for Db2?
Not today. The Openflow connector list covers BigQuery, MongoDB, MySQL, Oracle, PostgreSQL and SQL Server for database replication, and Db2 is not among them. Snowflake's first-party answer for Db2 is SnowConvert on the code side, so the data movement comes from IBM, a replication vendor or an ETL tool.
How do I move Db2 for z/OS data to Snowflake?
Decide first whether you need a snapshot or a live feed. A one-time copy can come through unload files or DMS full load. A live feed needs capture from the z/OS log, which IBM Data Replication supports with Snowflake as a target. Budget mainframe CPU and change control time either way.
How much does a Db2 to Snowflake migration cost?
Three bills. Snowflake compute for the load and the new workloads, the replication or ETL tool for the data, and engineering time to rewrite SQL PL and test. Replication vendors quote on capacity or sources, Fivetran bills monthly active rows, and an ongoing sync on Adapters starts at $49 a month on a flat plan.
When does Db2 11.5 support end?
IBM lists 30 April 2027 as the end of base support for Db2 11.5 on Linux, UNIX and Windows, all editions except Base Edition, with extended support to 30 April 2031. Base Edition support ended 30 September 2025. Teams moving analytics off Db2 often use the date to fund a Snowflake project.

For the wider vendor landscape see the best data integration tools, and for the type walkthrough on the PostgreSQL side of the same source, our guide to converting Db2 data types to PostgreSQL carries the SYSCAT queries that also find every risky column before a Snowflake load.

Keep Snowflake in step with Db2 until the day you switch

Declare the columns once with DECFLOAT kept exact and GRAPHIC as text, run the backfill, then let the same mapping sync incrementally with a merge on your key, retries and per-record logs. From $49 a month, with no per-row overage fees.

The live demo needs no card, and Starter is $49 a month.

Get started