[MySQL][XML] Jak eksportować rezultat zapytania do XML-a ?

Bazy danych
[MySQL][XML] Jak eksportować rezultat zapytania do XML-a ?

Zapewne większość z was nie wie, że klient MySQL-a potrafi wyeksportować dane do pliku XML. Niestety, aby tego dokonać konieczny jest dostęp do wiersza poleceń na serwerze, co na serwerach współdzielonych raczej nie występuje. Jednak możemy przetestować tę możliwość na naszym lokalnym komputerze.

Zakładamy że mamy tabelę z listą województw, która wygląda następująco:

+----+---------------------+
| id | name                |
+----+---------------------+
| 1  | kujawsko-pomorskie  |
+----+---------------------+
| 2  | mazowieckie         |
+----+---------------------+
| 3  | lubelskie           |
+----+---------------------+
| 4  | łódzkie             |
+----+---------------------+
| 5  | małopolskie         |
+----+---------------------+
| 6  | opolskie            |
+----+---------------------+
...

Standardowe polecenie listujące całą zawartość tabeli będzie wyglądało:

SELECT * FROM wojewodztwa

Chcąc teraz wyeksportować dane zwrócone przez to zapytanie należy przejść do konsoli i wprowadzić poniższe polecenie:

mysql 
    -h localhost -u login -p -X 
    -e "SELECT * FROM wojewodztwa" 
    nazwa_bazy > rezultat.xml

Poniższa tabela wyjaśnia co oznaczają poszczególne flagi.

[table]

Flaga Opis
-h Nazwa hosta
-u Login użytkownika
-p Logowanie przy użyciu hasła
-X Zwrócenie danych w postaci XML-a
-e Zapytanie SQL

[/table]

Rezultatem działania polecenia będzie plik result.xml o treści:

<?xml version="1.0"?>

<resultset statement="SELECT * FROM wojewodztwa" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
    <field name="id">1</field>
    <field name="name">kujawsko-pomorskie</field>
</row>
<row>
    <field name="id">2</field>
    <field name="name">mazowieckie</field>
</row>
<row>
    <field name="id">3</field>
    <field name="name">lubelskie</field>
</row>
<row>
    <field name="id">4</field>
    <field name="name">łódzkie</field>
</row>
<row>
    <field name="id">5</field>
    <field name="name">małopolskie</field>
</row>
<row>
    <field name="id">6</field>
    <field name="name">opolskie</field>
</row>
</resultset>