SQL-Neuling : Einfacher Debug (echo, pause) eines sql-Scripts unter Unix

Hallo,

schon zu DOS Zeiten konnte man in einem Script (Batch-Datei)

  • eine Zeile ausgeben,
  • das Script anhalten und
  • auf Tastendruck weiterlaufen lassen.
    Für einfach Debugs ist das doch mehr als nett. Wenn ich eine neue Sprache lerne, suche ich nach dem "hallo Welt" genau nach diesen Befehlen. Nun lerne ich sql und lasse die bescheiden Scripte unter Unix mit

mysql -uxxx -pyyy Meine_Datenbank < test.sql

ablaufen. Für mein Problem habe ich bisher nur die Möglichkeit gefunden, mit ! auf die Shell zu gehen.  Das ist ja fürchterlich und sieht etwa so aus:

! /bin/bash -c '/bin/echo -e "\n\nAusgabe: MeinUTF8Test ORDER BY ..."';
  ! /bin/bash -c 'read < /dev/tty' ;
  SELECT * FROM MeinUTF8Test ORDER BY Spalte_UTF8 ;

! /bin/bash -c '/bin/echo -e "\n\nAusgabe: mit (Spalte_UTF8 USING ..."';
  ! /bin/bash -c 'read < /dev/tty' ;
  SELECT * FROM MeinUTF8Test ORDER BY CONVERT(Spalte_UTF8 USING Latin1) = '';

Jungs und Mädels - geht das wirklich nicht einfacher? Gehts nicht ganz ohne den Umweg auf die Shell und die Maskiererei von Anführungsstrichen etc.?

Wäre nett wenn jemand eine einfache Lösung kennt.

Danke!!!

  1. Moin!

    schon zu DOS Zeiten konnte man in einem Script (Batch-Datei)

    • eine Zeile ausgeben,
    • das Script anhalten und
    • auf Tastendruck weiterlaufen lassen.
      Für einfach Debugs ist das doch mehr als nett. Wenn ich eine neue Sprache lerne, suche ich nach dem "hallo Welt" genau nach diesen Befehlen. Nun lerne ich sql und lasse die bescheiden Scripte unter Unix mit

    mysql -uxxx -pyyy Meine_Datenbank < test.sql

    ablaufen.

    Warum das? mysql ist eine interaktive Kommandozeile zur direkten Eingabe von SQL-Befehlen. Die Variante, eine ganze Liste von SQL-Kommandos via Shell in das Programm zu schieben, damit diese Befehle direkt hintereinander ausgeführt werden, ist eigentlich der Ausnahmefall, bzw. nur dazu da, dass man wirklich ohne Unterbrechung die GESAMTE Liste an SQL-Befehlen ausgeführt haben will.

    Für mein Problem habe ich bisher nur die Möglichkeit gefunden, mit ! auf die Shell zu gehen.  Das ist ja fürchterlich und sieht etwa so aus:

    ! /bin/bash -c '/bin/echo -e "\n\nAusgabe: MeinUTF8Test ORDER BY ..."';
      ! /bin/bash -c 'read < /dev/tty' ;
      SELECT * FROM MeinUTF8Test ORDER BY Spalte_UTF8 ;

    ! /bin/bash -c '/bin/echo -e "\n\nAusgabe: mit (Spalte_UTF8 USING ..."';
      ! /bin/bash -c 'read < /dev/tty' ;
      SELECT * FROM MeinUTF8Test ORDER BY CONVERT(Spalte_UTF8 USING Latin1) = '';

    Klar, vollkommen überflüssig.

    Rufe die MySQL-Kommandozeile einfach auf:

    mysql -uxxx -pyyy Meine_Datenbank

    Dann kriegst du ein neues Eingabeprompt, auf dem du direkt SQL befehlen kannst, und kannst alle Kommandos direkt ausführen und deren Ergebnis betrachten.

    Jungs und Mädels - geht das wirklich nicht einfacher? Gehts nicht ganz ohne den Umweg auf die Shell und die Maskiererei von Anführungsstrichen etc.?

    Für die normale, programmgesteuerte Ausführung von SQL ist die MySQL-Kommandozeile nicht vorgesehen, also braucht's auch keine ausgefeilten Debug-Möglichkeiten innerhalb einer SQL-Kommando-Liste. Der interaktive Modus reicht vollkommen aus.

    - Sven Rautenberg