Connect a database — MySQL, SQL Server, Oracle, Hana
Four JDBC sources, the four wizard steps in detail, choosing an incremental field so each sync only fetches what is new, and how to read the errors when a step will not pass.
Before you start
The database has to be reachable from this computer. The desktop app's engine runs locally, so there is no cloud IP to allow — but a database behind a company VPN needs that VPN up, and one behind a firewall needs this machine's address allowed. A quick check: connect to it once from any database client on this machine. If that fails, the wizard will fail too.
You also want a read-only account. TableDI only needs SELECT on the tables you are pulling.
Step 1: Connection Settings
Host, port, database name, username, password. The connection is saved and can be reused: one database, several tables, one set of credentials.
Step 2: Channel Settings
What to take. Either pick a table, or write a SQL statement when you want a join or a filtered subset. This is also where the schedule lives — how often to re-read — and where you choose the Incremental Field.
An incremental field is a column that only moves forward, so each sync can ask for "rows newer than last time" instead of re-reading everything. The field's own help says it plainly: the incremental field should be a column that updates dynamically, for example lastUpdateTime. An auto-increment id works too. Without one, every sync reads the whole table — correct but slow, and it needs a primary key to avoid piling up duplicates.
Step 3: Date Selection
Preview the rows that came back and decide which fields enter the table. This is the place to drop columns you will never use — narrower tables are faster and easier to read.
Step 4: Data Binding
Map fields onto the table's columns. New tables get columns named after the fields. Complete returns to the connection list and the first sync runs.
Keeping the data honest
- Set a primary key. Use the database's own primary key. Then re-reads update rather than duplicate.
- Deleted rows do not disappear. A connection reads what is there; it does not learn what was removed. If you need a true mirror, use a channel that replaces rather than appends, or clear and re-read on a schedule.
- Type changes at the source need attention here. A column that becomes text at the database end arrives as text; check the field type after a schema change.
When something goes wrong
| Symptom | Usually |
|---|---|
| Connection Settings will not pass | No route, a firewall blocking the port, or wrong credentials. Try the same details from a database client on this machine first |
| Channel Settings shows no tables | The account has no read permission on that database, or the schema is wrong |
| Sync Error | The database restarted, the password changed, or a column the SQL references was dropped. Click the status for the detail |
| Rows keep growing, with duplicates | No primary key, or the wrong incremental field |