# transfer-db
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.
Release Notes
-------------
The dump and restore are not finalized yet, so they don't work with the current version.
SYNOPSYS
--------
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](http://yaml.org) 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 `stdout` of
`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:
transfer-db help
To generate a corrective plan, you need the original plan and the `stdout` log generated by
the `run` command:
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.sql` that you will need to run to against the destination database in order
to remove partial batches.
* `new-plan.yaml` that you should use with for a new transfer run, to transfer the remaining
records.