sql >> Database >  >> RDS >> Mysql

XML-uitvoer van MySQL

De mysql commando kan XML direct uitvoeren, met behulp van de - -xml optie, die minstens zo ver terug als MySql 4.1 beschikbaar is.

Dit staat u echter niet toe om de structuur van de XML-uitvoer aan te passen. Het zal zoiets als dit weergeven:

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

En je wilt:

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

De transformatie kan worden gedaan met XSLT een script als dit gebruiken:

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

Dit is natuurlijk veel uitgebreider dan de beknopte MSSQL-syntaxis, maar aan de andere kant is het een stuk krachtiger en kan het allerlei dingen die niet mogelijk zouden zijn in MSSQL.

Als u een opdrachtregel XSLT-processor gebruikt, zoals xsltproc of saxon , kunt u de uitvoer van mysql pipe direct in het XSLT-programma. Bijvoorbeeld:

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


  1. Twee tabellen samenvoegen met een door komma's gescheiden lijst in het samenvoegveld

  2. Nooit items verwijderen? Goed idee? Gebruikelijk?

  3. Hoe installeer ik libpq-fe.h?

  4. Fout 1215:Kan beperking voor refererende sleutels niet toevoegen