English
Getting data in

Connect a database — MySQL, SQL Server, Oracle, Hana

Updated 2026-09-04 · 2 min read · For desktop macOS 0.0.9 / Windows 0.0.7

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
Did this page not answer your question? Browse the help centre, or write to support@tabledi.com — the inbox is read by the people who build TableDI.