sql >> Database teknologi >  >> RDS >> Mysql

XML-output fra MySQL

mysql kommandoen kan udskrive XML direkte ved hjælp af - -xml mulighed, som er tilgængelig mindst så langt tilbage som MySql 4.1.

Dette tillader dig dog ikke at tilpasse strukturen af ​​XML-outputtet. Det vil udsende noget som dette:

<?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>

Og du vil have:

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

Transformationen kan udføres med XSLT ved at bruge et script som dette:

<?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>

Dette er tydeligvis langt mere udførligt end den kortfattede MSSQL-syntaks, men på den anden side er det meget mere kraftfuldt og kan gøre alle mulige ting, der ikke ville være muligt i MSSQL.

Hvis du bruger en kommandolinje XSLT-processor såsom xsltproc eller saxon , kan du pipe outputtet af mysql direkte ind i XSLT-programmet. For eksempel:

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


  1. TOP 5 MySQL-sletsyntaks med tips til T-SQL-udviklere

  2. find alle navne ved hjælp af mysql-forespørgsel, der starter med bogstavet 'a'

  3. SQLite AUTOINCREMENT

  4. Sådan importeres en MySQL-dump fra kommandolinjen MED overskrivning