{"id":3047,"date":"2022-06-19T14:22:09","date_gmt":"2022-06-19T13:22:09","guid":{"rendered":"https:\/\/weblog.hildania.de\/?p=3047"},"modified":"2025-03-30T16:08:27","modified_gmt":"2025-03-30T16:08:27","slug":"mysql-und-postgresql-im-emacs","status":"publish","type":"post","link":"https:\/\/weblog.hildania.de\/index.php\/2022\/06\/19\/mysql-und-postgresql-im-emacs\/","title":{"rendered":"MySQL und PostgreSQL im Emacs"},"content":{"rendered":"\n<p>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\u00fcr keine L\u00f6cher in Firewalls bohren muss oder Ports \u00fcber SSH-Verbindungen tunneln.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/weblog.hildania.de\/wp-content\/uploads\/2022\/06\/Bildschirmfoto-2022-06-19-um-13.35.26-640x389.png\" alt=\"\" class=\"wp-image-3049\" style=\"object-fit:cover\"\/><figcaption class=\"wp-element-caption\">Tabellenansicht einer MariaDB im Spacemacs mit &#8222;truncate-lines&#8220;<\/figcaption><\/figure>\n\n\n\n<p>Als sehr praktisch hat sich aber der SQLi-Mode im Emacs erwiesen, weil dieser eine sehr praktische &#8222;toggle-truncate-lines&#8220; funktion hat und man in den Ausgaben scrollen, suchen, daraus kopieren usw. kann.<\/p>\n\n\n\n<!--more-->\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/weblog.hildania.de\/wp-content\/uploads\/2022\/06\/Bildschirmfoto-2022-06-19-um-13.44.24-640x471.png\" alt=\"\" class=\"wp-image-3051\" style=\"aspect-ratio:1;width:690px;height:auto\"\/><figcaption class=\"wp-element-caption\">Split-Screen mit Tabellenformat (oben) und MySQL Shell (unten)<\/figcaption><\/figure>\n\n\n\n<p>Au\u00dferdem ist des sehr praktisch, dass man innerhalb des Emacs den Bildschirm teilen kann, um sich z.B. eine Tabellenstruktur anzeigen zu lassen, w\u00e4hrend man im anderen Bildschirm SQL-Statements formuliert.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/weblog.hildania.de\/wp-content\/uploads\/2022\/06\/Bildschirmfoto-2022-06-19-um-13.57.13-640x533.png\" alt=\"\" class=\"wp-image-3052\"\/><figcaption class=\"wp-element-caption\">Emacs auf dem Datenbankserver via SSH<\/figcaption><\/figure>\n\n\n\n<p>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.\u00e4.) installieren und auch \u00fcber eine einfache SSH-Verbindung nutzen kann.<\/p>\n\n\n\n<p>Ich selbst bevorzuge den <a href=\"https:\/\/develop.spacemacs.org\/\">Spacemacs<\/a>, weil er die Funktionalit\u00e4t vom Emacs mit den Tastenk\u00fcrzeln vom vi kombiniert (siehe auch <a href=\"https:\/\/www.emacswiki.org\/emacs\/Evil\">Evil<\/a>) und eine einfacherere Konfiguration \u00fcber vorgefertigte Layer anbietet (siehe <a href=\"https:\/\/develop.spacemacs.org\/layers\/+lang\/sql\/README.html\">SQL Layer<\/a>).<\/p>\n\n\n\n<p>Eine sch\u00f6ne \u00dcbersicht, was alles so geht gibt es in dem Artikel: <a href=\"https:\/\/truongtx.me\/2014\/08\/23\/setup-emacs-as-an-sql-database-client\">Setup Emacs as an SQL Database client<\/a> (dort dann aber ohne die einfache Spacemacs-Konfiguration). Im Artikel <a href=\"https:\/\/dev.to\/viglioni\/emacs-as-sql-client-with-lsp-143l\">Emacs as SQL client with LSP<\/a> wird im verlinkten Video sch\u00f6n gezeigt, wie man den Emacs als SQL-IDE benutzen kann.<\/p>\n\n\n\n<p>Hat man einmal den <a href=\"https:\/\/github.com\/syl20bnr\/spacemacs\/blob\/master\/README.md#prerequisites\">Spacemacs installiert<\/a>, muss man eigentlich nur noch <code>sql<\/code> unter <code>dotspacemacs\/layers ()<\/code> in der <code>.spacemacs<\/code> hinzuf\u00fcgen. Ich habe das inkl. LSP-Support wie folgt gemacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>     (sql :variables\n          sql-backend 'lsp\n          sql-lsp-sqls-workspace-config-path 'workspace)<\/code><\/pre>\n\n\n\n<p>F\u00fcr Markdown, LaTeX und Co. benutze ich bereits das <a href=\"https:\/\/github.com\/joaotavora\/yasnippet\">YASnippet<\/a> 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\u00fcrzeln einsetzen.<\/p>\n\n\n\n<p>Fazit: Der SQLi Mode im Emacs reichert die mitgelieferten CLI-Werkzeuge viele g\u00a8angiger Datenbankmanagementsysteme mit einigen sinnvollen Funktionen, wie saubere Formatierung langer Tabellenzeilen, Scrollen, Suchen aber auch geteilten Bildschirmen und SQL-Sprachunterst\u00fctzung an, ohne jedoch irgendwelche &#8222;Magie&#8220;, wie andere GUIs anzuwenden oder auf eine Datenbankverbindung vom eigenen Client auf den Datenbankserver angewiesen zu sein. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00fcr keine L\u00f6cher in Firewalls bohren muss oder Ports \u00fcber SSH-Verbindungen tunneln. Als sehr praktisch hat sich aber der SQLi-Mode im Emacs &hellip; <a href=\"https:\/\/weblog.hildania.de\/index.php\/2022\/06\/19\/mysql-und-postgresql-im-emacs\/\" class=\"more-link\"><span class=\"screen-reader-text\">MySQL und PostgreSQL im Emacs<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[108,114,115],"class_list":["post-3047","post","type-post","status-publish","format-standard","hentry","category-geek","tag-emacs","tag-mysql","tag-postgresql"],"_links":{"self":[{"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/posts\/3047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/comments?post=3047"}],"version-history":[{"count":4,"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/posts\/3047\/revisions"}],"predecessor-version":[{"id":3087,"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/posts\/3047\/revisions\/3087"}],"wp:attachment":[{"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/media?parent=3047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/categories?post=3047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/weblog.hildania.de\/index.php\/wp-json\/wp\/v2\/tags?post=3047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}