sql >> データベース >  >> RDS >> Mysql

MySQLからのXML出力

    mysql コマンドは、-を使用して、XMLを直接出力できます。 -xml オプション。少なくともMySql4.1までさかのぼって利用できます。

    ただし、これではXML出力の構造をカスタマイズすることはできません。次のように出力されます:

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

    そしてあなたが望む:

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

    変換は、XSLT を使用して実行できます。 次のようなスクリプトを使用します:

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

    これは、簡潔なMSSQL構文よりも明らかに冗長ですが、一方で、はるかに強力であり、MSSQLでは不可能なあらゆる種類のことを実行できます。

    xsltprocなどのコマンドラインXSLTプロセッサを使用する場合 またはsaxonmysqlの出力をパイプできます XSLTプログラムに直接。例:

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


    1. MySQLで変数をデクリメントすることは可能ですか?

    2. これら2つの結合テーブルアプローチの違いは?

    3. UNIXタイムスタンプを使用した1か月以内のSQLカウントレコード

    4. SQL Server(T-SQL)でデータベースメールアカウントとデータベースプリンシパル間の関連付けを検索する