MySQL und XML

Lernziel

MySQL installieren und starten und XML-Dateien aus SQL-Tabellen und Abfragen erzeugen. Wenn Sie noch mehr Möglichkeiten suchen, schauen Sie sich die folgende Seite an:

XML-Spy Datenbank-Anbindung

Handlungsanweisungen

Aufgaben

  1. Downloaden, installieren und starten Sie den MySQL-Server.

  2. Laden Sie bitte folgende ZIP-Datei herunter: rechnungen.zip Diese enthält eine Mysql-Datenbank (als Ordner). Kopieren Sie bitten den entpackten Ordner „rechnungen“ in das data-Verzeichnis Ihres Mysql-Servers.

  3. Speichern Sie die gesamte Tabelle rechnungen als XML-Datei (mit mysqldump)

  4. Speichern Sie das Ergebnis der Select-Abfrage: select * form rechnungen where firma=’Task’ in einer XML-Datei.

Zusatz

Entwickeln Sie eine Batch-Datei:
  • eine XML-Datei soll durch eine SQL-Abfrage generiert werden

  • die XML soll durch eine XSL-Datei in eine HTML-Tabelle (oder CSV-Datei) transformiert werden

  • Benutzen Sie dazu u.a. den externen Transformator saxon!

Wo bekomme ich es her?

MySQL 5.0 heruntergeladen: MySQL 5.0

Wie installiere ich mysql?

Die „ohne Installation“-Version können Sie entpacken, nachdem sie heruntergeladen ist. Sie erhalten dann einen Ordner, in dem sich alle benötigten Dateien befinden.

../../_images/ohne-installer-mysql.png

Wie starte ich mysql?

Damit Sie mit Mysql arbeiten können, müssen Sie den Mysql-Server starten.

Manueller Start (zum Anfang des Lernens empfohlen) In dem Verzeichnis von mysql befindet sich ein Unterordner bin. Um mysql zu starten, klicken Sie auf die Mysqld.exe

../../_images/mysql-startprogramme.png

Es öffnet sich kurz ein schwarzes Fenster (die Konsole), das dann wieder verschwindet. Mysql läuft dann im Hintergrund.

Einloggen in die Datenbank

In dem bin-Ordner des MySQL-Servers befindet sich der MySQL-Client mysql.exe. Mit diesem können wir uns in die Datenbank einloggen. Mysql.exe können Sie wie folgt aufrufen:

  1. Gehen Sie auf Start > Ausführen

  2. Geben Sie cmd ein.

  3. Wechseln Sie in den bin-Ordner des MySQL-Servers, in dem sich auch die mysql.exe befindet.

  4. Geben Sie folgenden Befehl ein, um sich einzuloggen:

Mysql.exe -u root

bzw.

mysql.exe --xml -u root (wenn Sie sich mit der XML-Option einloggen wollen)

Die wichtigsten Befehle:

.. index:: mysql: export

Datenbank nach XML exportieren

mysqldump --xml databasename [tables]

Eine Datenbank nach XML exportieren (in der Shell/cmd)

mysqldump.exe --xml -u root --database rechnungen

#in die Datei ergebnis.xml

mysqldump.exe --xml -u root –-database rechnungen > ergebnis.xml

Die gesamte Datenbank rechnungen als XML exportieren

mysqldump.exe --xml -u root --database rechnungen --table  rechnungen

#in die Datei ergebnis.xml

mysqldump --xml -u root –-database rechnungen --table rechnungen> ergebnis.xml

Aus der Datenbank nur eine Tabelle exportieren.

Select-Abfragen nach XML exportieren

mysql -h localhost -u root -p

Wenn Sie sich in mysql einloggen, kennen Sie es wahrscheinlich.

mysql --xml -h localhost -u root -p

Man kann auch mit der Option xml arbeiten. Alle Select-Ausgaben werden dann in XML-Struktur angezeigt.

mysql --xml -u root -e "select * from rechnungen" rechnungen > ergebnis.xml

# mysql=Client
# --xml = Option XML
# -u root = Einloggen als User root
# -e =execute (ausführen)
# select * from rechnungen" = SQL-Befehl
# rechnungen = Datenbank
# > ergebnis.xml = in die Datei ausgeben

Sie können auch Select-Abfragen als XML ausgeben und in einer Datei speichern.

Die XSL-Datei als Lösung für die Zusatzaufgabe

Nur, wenn Sie bei der Lösung der Aufgabe nicht weiterkommen:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="resultset">
    <table>
      <xsl:apply-templates select="row"/>
    </table>
  </xsl:template>

  <xsl:template match="row">
    <tr>
      <td><xsl:value-of select="field[@name='nummer']"/></td>
      <td><xsl:value-of select="field[@name='nachname']"/></td>
      <td><xsl:value-of select="field[@name='vorname']"/></td>
      <td><xsl:value-of select="field[@name='firma']"/></td>
      <td><xsl:value-of select="field[@name='kosten']"/></td>
      <td><xsl:value-of select="field[@name='datum']"/></td>
    </tr>
  </xsl:template>

</xsl:stylesheet>

Oder eine andere Lösung:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="resultset">
    <table><xsl:apply-templates select="row"/></table>
  </xsl:template>

  <xsl:template match="row">
    <tr><xsl:apply-templates select="field"/></tr>
  </xsl:template>

  <xsl:template match="field">
    <td><xsl:value-of select="."/></td>
  </xsl:template>

</xsl:stylesheet>