Skip to main content

Examples and use cases

Complete command examples for every supported migration path, plus advanced scenarios. Each example assumes you already have a credentials.json file configured (see the Quick Start Guide).


Oracle to PostgreSQL

Full schema and data migration with validation.

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name HR \
--target_db_auth_id postgres_dev \
--target_schema_name hr \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id oracle_prod `
--source_schema_name HR `
--target_db_auth_id postgres_dev `
--target_schema_name hr `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

Oracle to SQL Server

Two-phase approach: transfer data first, then add constraints.

Phase 1: Schema and data

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name FINANCE \
--target_db_auth_id mssql_target \
--target_schema_name finance \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id oracle_prod `
--source_schema_name FINANCE `
--target_db_auth_id mssql_target `
--target_schema_name finance `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

Phase 2: Constraints

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name FINANCE \
--target_db_auth_id mssql_target \
--target_schema_name finance \
--migration_db_auth_id ms_mig_log \
--task_list copy_pk copy_ak copy_fk

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id oracle_prod `
--source_schema_name FINANCE `
--target_db_auth_id mssql_target `
--target_schema_name finance `
--migration_db_auth_id ms_mig_log `
--task_list copy_pk copy_ak copy_fk

PostgreSQL to PostgreSQL

Clone a schema across servers or within the same server.

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id postgres_prod \
--source_schema_name public \
--target_db_auth_id postgres_staging \
--target_schema_name public_copy \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id postgres_prod `
--source_schema_name public `
--target_db_auth_id postgres_staging `
--target_schema_name public_copy `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

PostgreSQL to SQL Server

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id postgres_prod \
--source_schema_name analytics \
--target_db_auth_id mssql_target \
--target_schema_name analytics \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id postgres_prod `
--source_schema_name analytics `
--target_db_auth_id mssql_target `
--target_schema_name analytics `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

SQL Server to PostgreSQL

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id mssql_source \
--source_schema_name dbo \
--target_db_auth_id postgres_dev \
--target_schema_name dbo_migrated \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id mssql_source `
--source_schema_name dbo `
--target_db_auth_id postgres_dev `
--target_schema_name dbo_migrated `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

Netezza to PostgreSQL

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id netezza_source \
--source_schema_name ADMIN \
--target_db_auth_id postgres_dev \
--target_schema_name admin \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id netezza_source `
--source_schema_name ADMIN `
--target_db_auth_id postgres_dev `
--target_schema_name admin `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

Netezza to SQL Server

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id netezza_source \
--source_schema_name WAREHOUSE \
--target_db_auth_id mssql_target \
--target_schema_name warehouse \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id netezza_source `
--source_schema_name WAREHOUSE `
--target_db_auth_id mssql_target `
--target_schema_name warehouse `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

SQL Server to SQL Server

Clone or migrate schemas between SQL Server instances.

Linux

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id mssql_source \
--source_schema_name dbo \
--target_db_auth_id mssql_target \
--target_schema_name dbo \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Windows (PowerShell)

.\MigratorXpress.exe --auth .\credentials.json `
--source_db_auth_id mssql_source `
--source_schema_name dbo `
--target_db_auth_id mssql_target `
--target_schema_name dbo `
--migration_db_auth_id ms_mig_log `
--n_jobs 4 `
--fasttransfer_p 2 `
--drop_tables_if_exists true `
--task_list translate create transfer diff

Advanced scenarios

Incremental data sync

Re-run only the transfer and diff tasks to refresh data without recreating tables. Useful for periodic syncs during a phased migration.

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name SALES \
--target_db_auth_id postgres_dev \
--target_schema_name sales \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--fasttransfer_p 2 \
--drop_tables_if_exists true \
--task_list transfer diff
tip

Use --drop_tables_if_exists true with transfer to truncate and reload. Omit it if the target tables support upsert logic in your workflow.

Schema-only migration

Translate and create the schema without transferring any data. Useful for reviewing the translated DDL before committing to a full migration.

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name INVENTORY \
--target_db_auth_id postgres_dev \
--target_schema_name inventory \
--migration_db_auth_id ms_mig_log \
--drop_tables_if_exists true \
--task_list translate create

Parallel large tables

For schemas with very large tables, increase both parallelism levels:

./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name EVENTS \
--target_db_auth_id postgres_dev \
--target_schema_name events \
--migration_db_auth_id ms_mig_log \
--n_jobs 8 \
--fasttransfer_p 4 \
--drop_tables_if_exists true \
--task_list translate create transfer diff
  • --n_jobs 8 migrates up to 8 tables concurrently.
  • --fasttransfer_p 4 splits each table into 4 partitions for parallel transfer.
warning

Higher parallelism increases load on both the source and target databases. Monitor CPU and I/O during large migrations and adjust values as needed.

Multi-schema patterns

Migrate multiple schemas in one run (v0.6.12+):

# All schemas starting with "app_"
./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name "app_%" \
--target_db_auth_id postgres_dev \
--target_schema_name "app_%" \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--drop_tables_if_exists true \
--task_list translate create transfer diff
# Every schema in the database
./MigratorXpress --auth ./credentials.json \
--source_db_auth_id oracle_prod \
--source_schema_name "%" \
--target_db_auth_id postgres_dev \
--target_schema_name "%" \
--migration_db_auth_id ms_mig_log \
--n_jobs 4 \
--drop_tables_if_exists true \
--task_list translate create transfer diff

Best practices

  1. Migrate data before constraints. Run translate create transfer diff first, then copy_pk copy_ak copy_fk in a separate step. This avoids constraint-violation errors during bulk loading.

  2. Start with a small schema. Test the full workflow on a schema with a few tables before migrating a large production database.

  3. Use diff to validate. Always include diff in your task list to verify row counts match between source and target.

  4. Tune parallelism gradually. Begin with --n_jobs 2 --fasttransfer_p 2 and increase based on observed throughput and system load.

  5. Secure your credentials file. Use $env{VAR_NAME} references instead of plain-text passwords, and restrict file permissions to the migration user.

  6. Review translated DDL. Run a translate-only step first to inspect the generated DDL before creating tables on the target.

Next steps

Copyright © 2026 Architecture & Performance.