Simple SQL/CLI application that transfers data between 2 databases.
Simple ODBC application that transfers data between 2 databases.
The application uses the SQL/CLI API and only few ODBC extensions that are absolutely needed to make ODBC work. This means that the application is easily portable to other SQL/CLI implementations.
It includes a database agnostic dump file format library.
Current release is 0.3.1.1.
The dump and restore are not finalized yet, so they don't work with the current version.
To use transfer-db you either right your own transfer plan by hand or use transfer-db to generate a transfer plan for you. You can edit the generated tranfer plan.
A transfer plan is an yaml file specifying the database connection parameters and what tables and data should be transferred.
Gnereating a plan:
transfer-db makePlan splitByRows <n> -d<SOURCEDB_ODBC_DATASOURCE> -u<SOURCEDB_USER_NAME> -p<SOURCEDB_PASSWORD> -s<SOURCEDB_SCHEMA> -D<DESTDB_ODBC_DATASOURCE> -U<DESTDB_USER_NAME> -P<DESTDB_PASSWORD> -S<DESTDB_SCHEMA> > my-plan.yaml
This command will generate on the standard output a plan for transferring the database SOURCEDB DESTDB in batches of
<n> rows (the splitByRows sub-command). In case of failure, you could restart the process by skipping the completed batches.
After that, simply run:
transfer-db run my-plan.yaml > therun-0001.log
This command will run the plan in the
my-plan.yaml file and will capture the
transfer-db command into the file
therun-0001.log. This file logs the transferred tables and batches and could be used to generate a corrective plan in case something went wrong. On console (
stderr) there will be printed detailed information about running the plan.
For more advanced options, on controlling the number of threads or of what batches should be run, type:
To generate a corrective plan, you need the original plan and the
stdout log generated by the
transfer-db correctivePlan my-plan.yaml -sfix-001.sql -pnew-plan.yaml -itherun-001.log
This command will read the original plan from
my-plan.yaml file, the log of the previous run from
therun-001.log file and will generate 2 files:
fix-001.sqlthat you will need to run to against the destination database in order to remove partial batches.
new-plan.yamlthat you should use with for a new transfer run, to transfer the remaining records.