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
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 8migrates up to 8 tables concurrently.--fasttransfer_p 4splits each table into 4 partitions for parallel transfer.
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
-
Migrate data before constraints. Run
translate create transfer difffirst, thencopy_pk copy_ak copy_fkin a separate step. This avoids constraint-violation errors during bulk loading. -
Start with a small schema. Test the full workflow on a schema with a few tables before migrating a large production database.
-
Use
diffto validate. Always includediffin your task list to verify row counts match between source and target. -
Tune parallelism gradually. Begin with
--n_jobs 2 --fasttransfer_p 2and increase based on observed throughput and system load. -
Secure your credentials file. Use
$env{VAR_NAME}references instead of plain-text passwords, and restrict file permissions to the migration user. -
Review translated DDL. Run a
translate-only step first to inspect the generated DDL before creating tables on the target.
Next steps
- Quick Start Guide -- step-by-step setup
- CLI Reference -- all available options and flags
- Command Wizard -- build your command interactively