そういえばAurora MySQLのLOAD XML FROM S3ステートメント

Aurora MySQLのLOAD XML FROM S3ステートメントのXMLの仕様にちょっと癖があるので、メモがてら雑に書いていく。どの辺に需要があるかは知らない。

  • 行を示す要素はルート直下になくても良いので、validなXMLにしたかったら適当なルート要素を付けてやると良い
    • デフォルトではrow要素を行とみなす*1
    • よくあるサンプル(1行での投入事例)ではベタにルートに1個だけ<row>と書いてある事例が多いのでどうすればいいか結構迷うと思う*2
    • やってみた感じ、階層は問わないようなので*3、適当な要素をルートにつけてやっても期待通りの動作をする。
  <?xml version="1.0" encoding="UTF-8"?>
  <table name="users">
    <row>
      <field name="id">1</field>
      <field name="name">Ichiro R. Tanaka</field>
    </row>
  </table>
  • CDATAセクションと&#式の実体参照は使えない
    • なのでエスケープ処理は真面目に書いてあげないといけない
    • &lt, &gt;, &amp;が使えるのは確認した

何かあればまた追加する(かも)

*1:オプションで指定できる

*2:少なくとも当方は迷った

*3:xpathの//型式とかDOMのgetElementByNameで実装されてるのだろう