Skip to content

Use TablePro every day? A license adds the paid features and funds the next release. Get a licenseGet a license, fund TablePro

Schema, compare and sync

For changing a database’s structure and keeping two databases in step: edit a table with the DDL in front of you, see how the tables relate, bring staging in line with development, or copy tables to another server or engine. Everything here is in the Mac app; the last section covers iPhone and iPad.
MaciPhone & iPad

Paid features on this page: Compare & Sync (Starter). Everything else here is free.

Change structure, read the DDL first

The Structure tab edits a table’s columns, indexes, foreign keys and CHECK constraints in a grid. Changes wait until you save, and Preview SQL (⌘⇧P) shows the ALTER TABLE statements before anything runs. A change that removes something, changes a type, adds NOT NULL or changes the primary key asks first, even on a connection whose Safe Mode level is Silent.

Indexes can use expression keys such as lower(email). New Table builds a table the same way, with a live SQL preview. On SQLite, libSQL, Turso and Cloudflare D1, which cannot alter a foreign key in place, TablePro writes a table rebuild for you to review. It runs it on SQLite and a local libSQL file once you confirm, and leaves it to you on Turso, remote libSQL and D1.

The Structure tab of the reviews table with a new CHECK constraint and a new index waiting to be saved, and the DDL preview open.

See how the tables relate

View ER Diagram draws the current schema’s tables and foreign keys, with crow’s-foot cardinality worked out from primary and unique keys. Junction tables such as product_tags fold into one many-to-many line. Export the diagram as a PNG, copy it as an image, or export it as SQL: the CREATE TABLE statements with their foreign keys.

The diagram is a snapshot to read and share. Tables are changed in the Structure tab, not on the canvas.

An ER diagram of the shop schema with its tables and relationships, product_tags shown as a many-to-many line between products and tags.

Routines, triggers and folders in the sidebar

Under each schema the sidebar lists procedures, functions and triggers where the engine has them, and opens their source in a read-only tab you can copy from or open in the editor. Redshift, CockroachDB, PGlite and SAP HANA list none. PostgreSQL partitions sit under their parent table.

Folders for tables and views

Group tables and views into folders by dragging them or with Move to, in the list or the tree layout of the sidebar. The filter field looks inside folders. A folder exists only in TablePro and changes nothing on the server; with iCloud Sync on, folders follow you to your other Macs.

Compare & Sync

Compare & Sync: Starter plan

Pick a source and a target, which can be two servers or two databases on one server, and Compare & Sync lists every table that differs, with views, routines and triggers if you include them. In data mode it matches rows by key and marks each value that differs, with a filter and a row limit per table, so you can compare one stretch of a large table.

The script it generates is ordered by foreign keys and written for the target’s own client. Statements that destroy data, such as dropping a column, narrowing a type or deleting rows, are held back until you allow them for that run, and a connection set to Read-Only cannot be picked as the target. Save a comparison to run it again in one click.

Compare & Sync between shop and shop_staging, listing a column whose length differs and a DROP COLUMN held back from the script.

Copy To, Duplicate Database and Transfer To

Copy To sends tables, views, routines and triggers, as structure, data or both, to another database on any saved connection, including one running a different engine. Before anything is written, a review lists the DDL, the rows each table expects and every column type that changes on the way, such as an ENUM column from MariaDB arriving in PostgreSQL as VARCHAR without its list of allowed values. A WHERE clause and a row limit per table copy part of a table.

Duplicate Database copies a whole database under a new name on the same connection. Transfer To moves rows straight into an existing table on another open connection, with a column mapping and no file in between. All three are free.

The Copy To review from MariaDB to PostgreSQL: the expected rows of each table, two enum columns under Type changes because their lists of allowed values are not carried over, and the CREATE TABLE script.

Users, sessions and maintenance

Table maintenance, such as VACUUM and REINDEX on PostgreSQL or OPTIMIZE and CHECK on MySQL, shows its SQL before it runs. Databases and schemas can be created, dropped and renamed from the sidebar where the engine supports it.

Users & Roles

Users & Roles shows each user’s privileges as a tree from the server down to a single column. Grants and revokes wait as staged changes and show their SQL before they run, so you never write a GRANT by hand.

Users & Roles
PostgreSQL, MySQL, MariaDB, PGlite
Users & Roles on a MySQL server, with the SQL Preview showing the GRANT that gives the app_reader user SELECT on the total column of shop.orders.

Server Dashboard

The Server Dashboard shows live sessions, server metrics and slow queries, refreshed at the interval you pick. Where the engine allows it, cancel a running query or terminate a session from its row; both go through the connection’s Safe Mode. On SQLite, DuckDB and Typesense it shows metrics only.

The Server Dashboard for a PostgreSQL server, listing active sessions with a long-running SELECT selected and the Terminate button visible.

On iPhone and iPad

The iPhone and iPad app shows a table’s columns, indexes and foreign keys, read-only. From the table list you can truncate or drop a table on a SQL engine, unless the connection is Read-Only.

Structure editing, the ER diagram, Compare & Sync, Copy To, Users & Roles and the Server Dashboard are in the Mac app only.

Where it works

Each capability on this page, the plan it needs on the Mac, and what exists of it on iPhone and iPad
Capability
Structure editing with a DDL previewMac: FreeiPhone and iPad: Columns, indexes and foreign keys, read-only
New TableMac: FreeiPhone and iPad: Not available
Truncate and drop tablesMac: FreeiPhone and iPad: Free
ER diagramMac: FreeiPhone and iPad: Not available
Routines, triggers and table foldersMac: FreeiPhone and iPad: Not available
Compare & SyncMac: Starter planiPhone and iPad: Not available
Copy To, Duplicate Database and Transfer ToMac: FreeiPhone and iPad: Not available
Users & RolesMac: FreeiPhone and iPad: Not available
Server Dashboard and table maintenanceMac: FreeiPhone and iPad: Not available

Limits worth knowing

  • Compare & Sync writes a structure script only between two databases of the same engine, with MySQL and MariaDB counted as one. Other pairs compare read-only, MongoDB structures never get a script, and a data sync across engines warns you to check how values are written. To move tables to another engine, use Copy To.
  • Reordering columns rebuilds the table on SQLite and on a local libSQL file, after you confirm. On PostgreSQL, Turso, remote libSQL and Cloudflare D1, TablePro writes the rebuild script and leaves running it to you.
  • The ER diagram is read-only. It is not a schema designer.
  • The sessions and query text the Server Dashboard can show depend on the privileges of the account you connect with.

Get TablePro

TablePro is open source and free to use. Paid plans add optional features to the Mac app.
Download for Mac

macOS 13 Ventura or laterApple silicon or Intel

Download on the App Store

iPhone and iPadiOS and iPadOS 18 or later

See pricing