Beruflich wie privat habe ich u.a. mit MariaDB, MySQL oder PostgreSQL Datenbanken zu tun. Diese nutze ich in der Regel mit den jeweiligen CLI Clients, die mit dem DBMS geliefert werden, weil man dafür keine Löcher in Firewalls bohren muss oder Ports über SSH-Verbindungen tunneln.
Als sehr praktisch hat sich aber der SQLi-Mode im Emacs erwiesen, weil dieser eine sehr praktische “toggle-truncate-lines” funktion hat und man in den Ausgaben scrollen, suchen, daraus kopieren usw. kann.
Außerdem ist des sehr praktisch, dass man innerhalb des Emacs den Bildschirm teilen kann, um sich z.B. eine Tabellenstruktur anzeigen zu lassen, während man im anderen Bildschirm SQL-Statements formuliert.
Wie bereits oben angedeutet besteht einer der Vorteile darin, dass man den Emacs auch auf dem Datenbankserver (oder in entsprechendem Netz auf Backup-Servern o.ä.) installieren und auch über eine einfache SSH-Verbindung nutzen kann.
Ich selbst bevorzuge den Spacemacs, weil er die Funktionalität vom Emacs mit den Tastenkürzeln vom vi kombiniert (siehe auch Evil) und eine einfacherere Konfiguration über vorgefertigte Layer anbietet (siehe SQL Layer).
Eine schöne Übersicht, was alles so geht gibt es in dem Artikel: Setup Emacs as an SQL Database client (dort dann aber ohne die einfache Spacemacs-Konfiguration). Im Artikel Emacs as SQL client with LSP wird im verlinkten Video schön gezeigt, wie man den Emacs als SQL-IDE benutzen kann.
Hat man einmal den Spacemacs installiert, muss man eigentlich nur noch sql
unter dotspacemacs/layers ()
in der .spacemacs
hinzufügen. Ich habe das inkl. LSP-Support wie folgt gemacht:
(sql :variables
sql-backend 'lsp
sql-lsp-sqls-workspace-config-path 'workspace)
Für Markdown, LaTeX und Co. benutze ich bereits das YASnippet Modul. Meine MySQL-Snippets habe ich aktuell aber noch in einigen Notizseiten von mir. Potentiell lassen sich aber die wichtigsten Befehle bzw. Vorlagen ablegen und dann auch mit eigenen Tastenkürzeln einsetzen.
Fazit: Der SQLi Mode im Emacs reichert die mitgelieferten CLI-Werkzeuge viele g¨angiger Datenbankmanagementsysteme mit einigen sinnvollen Funktionen, wie saubere Formatierung langer Tabellenzeilen, Scrollen, Suchen aber auch geteilten Bildschirmen und SQL-Sprachunterstützung an, ohne jedoch irgendwelche “Magie”, wie andere GUIs anzuwenden oder auf eine Datenbankverbindung vom eigenen Client auf den Datenbankserver angewiesen zu sein.