Tables
Nos bases de données, dans une app Mac.
Tables est un client de bases de données pour le Mac : MySQL, MariaDB, PostgreSQL, SQLite et Redis, en local ou à travers un tunnel SSH, avec un éditeur SQL qui connaît le schéma.
Une fenêtre par connexion, des onglets, et des favoris rangés par groupe, avec une couleur et une étiquette : Local, Dev, Test, Staging ou Prod. Les connexions d’autres clients s’importent depuis les réglages.
Une application macOS native en Swift 6 et SwiftUI, signée et notarisée, en français et en anglais. Elle parle directement aux serveurs, sans pilote à installer.
- Pour
- Développeurs
- Plateformes
- macOS
- Technologies
- Swift
- SwiftUI
- SwiftNIO
- AppKit
Une connexion, et on est dans les données.

Parcourir et modifier
Une table s’ouvre par pages de 500 lignes, avec son total. On filtre sur plusieurs conditions, en ET ou en OU, on trie sur plusieurs colonnes, et l’ordre et la largeur des colonnes sont retenus par table. Une clé étrangère se suit d’un clic.
Le détail d’une ligne affiche une valeur en texte, en JSON, en image ou en hexadécimal. Les modifications s’annulent et se rétablissent, s’affichent en SQL à la demande, puis s’enregistrent dans une transaction.

Un éditeur qui connaît le schéma
L’éditeur SQL colore, formate et complète à partir des tables et des colonnes de la base. Chaque instruction a son résultat, les paramètres sont demandés à l’exécution, et le plan d’exécution d’une instruction s’affiche à la demande.
Une requête trop longue s’annule par une seconde connexion, qui demande au serveur de l’arrêter. Un résultat tiré d’une seule table reste modifiable comme la table elle-même. L’historique et les requêtes enregistrées sont propres à chaque favori.

Prudent avec la production
Une connexion en lecture seule l’est trois fois : l’interface désactive les modifications, chaque instruction est analysée avant de partir, et la session elle-même passe en lecture seule sur le serveur. Pour Redis, Tables demande au serveur quelles commandes écrivent.
Une connexion étiquetée Prod demande, par défaut, confirmation avant les écritures de l’éditeur. Les tunnels SSH passent par l’OpenSSH du Mac et vérifient la clé du serveur, et les mots de passe restent dans le trousseau, synchronisé par iCloud.
var readOnlyGuard: String {
switch self {
case .mysql: "SET SESSION TRANSACTION READ ONLY"
case .postgresql: "SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY"
case .sqlite: "PRAGMA query_only = ON"
}
}
if isReadOnly {
_ = try? await session.execute(session.dialect.readOnlyGuard)
}
for statement in statements {
let started = clock.now
do {
guard !isReadOnly || SQLStatements.isReadOnly(statement, dialect: session.dialect) else {
throw DatabaseError(message: String(localized: "Connexion en lecture seule"))
}
let result = try await session.execute(statement)

Écrit depuis zéro
Tables est en Swift de bout en bout. MySQL, MariaDB et PostgreSQL passent par des pilotes open source, corrigés pour remonter ce dont l’édition a besoin, comme la table d’origine de chaque colonne. Le protocole de Redis et l’export Excel, archive ZIP comprise, sont écrits à la main.
La structure se modifie aussi : colonnes, index, clés étrangères, déclencheurs, vues et fonctions. Pour SQLite, une modification que la base ne sait pas faire reconstruit la table. Processus, utilisateurs et privilèges, variables : l’administration courante tient dans la même fenêtre.


Avec Alpage
Tables fait la paire avec Alpage, notre environnement de développement local. Les sauvegardes utilisent d’abord ses outils mysqldump et pg_dump, et les tests d’intégration tournent contre ses vrais serveurs MySQL, MariaDB, PostgreSQL et Redis.
Un client natif, pour cinq moteurs.
- Moteurs de bases de données
- 5
- Moteurs de bases de données
- Barrières en lecture seule
- 3
- Barrières en lecture seule
- Tests automatisés
- 960+
- Tests automatisés
- Télémétrie
- 0
- Télémétrie