Import connections from other SQL clients (DBeaver, Beekeeper, TablePlus, DataGrip, Sequel Ace)#393
Draft
debba wants to merge 1 commit into
Draft
Import connections from other SQL clients (DBeaver, Beekeeper, TablePlus, DataGrip, Sequel Ace)#393debba wants to merge 1 commit into
debba wants to merge 1 commit into
Conversation
Add an import flow that reads saved connections from DBeaver, Beekeeper Studio, TablePlus, DataGrip and Sequel Ace, plus Tabularis JSON exports. Each source is parsed into a neutral envelope, credentials are decrypted or read from the keychain when requested, and a preview lets you resolve duplicates before merging. Entry point is a dropup next to Add Connection.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Import connections from other SQL clients
Setting up Tabularis from scratch when you already have a dozen connections configured in another client is tedious, and re-typing hosts/ports/credentials is exactly the kind of friction that makes people bounce off a new tool. This PR adds a one-shot importer that reads connections straight from the SQL clients people are most likely already using.
The importers are ported from TablePro's
ForeignAppfamily, reworked into a single Rust module with a shared trait and a neutral intermediate representation, so adding a sixth client later is mostly "implement the trait".Supported clients
data-sources.json, decryptscredentials-config.json(AES-128-CBC).app.db, decrypts with the per-install.key. Personal workspace only (workspaceId = -1).Connections.plist/ConnectionGroups.plist, pulls passwords from the login Keychain.dataSources.xml+sshConfigs.xml(JDBC URLs). Passwords live in the JetBrains credential store and are out of scope for now.Favorites.plist, pulls passwords from the login Keychain. MySQL only.How it works
ImportEnvelope.ImportPreview: duplicates are flagged, and connections whose driver isn't installed are surfaced (e.g. an Oracle connection when the Oracle plugin isn't present) without blocking the rest.ExportPayloadand merged through the regular import path, so there's a single code path that actually creates connections.SSH tunnels (password / key auth), SSL config, and connection groups carry over where the source app exposes them. Driver labels are mapped to Tabularis driver ids (
postgres,mysql/MariaDB,sqlite,mssql,mongodb,redis,oracle,clickhouse,cockroachdb,redshift,cassandra,bigquery,duckdb,libsql).Credentials & security
has_password/has_sshbooleans cross the boundary.credentials_abortedand the connection is still imported without its password rather than failing the whole run.Code layout
Entry point in the UI is a new option in the Connections page; the modal walks discover → preview → apply.
Tests
driver_map(label → id, default ports) and the importers viaimporter_tests.rs, using injectable data roots so no real client install is needed.datagrip/jdbc.rsURL parsing is covered.i18n
New keys added across all 8 locales (en, it, es, de, fr, ja, ru, zh).
Still open / would love eyes on
c.kdbx) is deliberately left out — worth a follow-up.Marking as draft until we get some testing coverage from people running these clients in the wild.