Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dane wyjściowe XML z MySQL

mysql polecenie może wyprowadzić XML bezpośrednio, używając - -xml opcja, która jest dostępna co najmniej od MySql 4.1.

Nie pozwala to jednak na dostosowanie struktury danych wyjściowych XML. Wygeneruje coś takiego:

<?xml version="1.0"?>
<resultset statement="SELECT * FROM orders" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
    <field name="emp_id">129</field>
    <field name="cust_id">107</field>
    <field name="region">Eastern</field>
  </row>
</resultset>

A ty chcesz:

<?xml version="1.0"?>
<orders>
  <employee emp_id="129">
    <customer cust_id="107" region="Eastern"/>
  </employee>
</orders>

Transformację można wykonać za pomocą XSLT używając skryptu takiego jak ten:

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

  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="resultset">
    <orders>
      <xsl:apply-templates/>
    </orders>
  </xsl:template>

  <xsl:template match="row">
    <employee emp_id="{field[@name='emp_id']}">
      <customer
        cust_id="{field[@name='cust_id']}"
        region="{field[@name='region']}"/>
    </employee>
  </xsl:template>

</xsl:stylesheet>

Jest to oczywiście o wiele bardziej gadatliwe niż zwięzła składnia MSSQL, ale z drugiej strony jest o wiele potężniejsza i może robić wiele rzeczy, które nie byłyby możliwe w MSSQL.

Jeśli używasz procesora XSLT wiersza poleceń, takiego jak xsltproc lub saxon , możesz potoku wyjście mysql bezpośrednio do programu XSLT. Na przykład:

mysql -e 'select * from table' -X database | xsltproc script.xsl -


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL> Tabela nie istnieje. Ale to robi (albo powinno)

  2. Historyzacja bazy danych

  3. MySQL wybierz wiersze, w których data nie znajduje się między datą

  4. WYBIERZ * Z serwera połączonego MySQL przy użyciu serwera SQL bez OpenQuery

  5. Jak obliczyć całkowitą sprzedaż miesięcznie w MySQL?