新SQLコマンド LOAD XML INFILE

# 約10日間の夏休みが終わり、今日から復帰です。ずっとオフライン環境にいたので、えらい事になってます^^;

まずは、ver5.1における新SQLコマンドの追加の話題から。

http://lists.mysql.com/commits/19615

bar氏が"LOAD XML INFILE"というコマンドを実装したようです。文章での説明がまだ見当たらないのでソースを読んで憶測するしかないですが、"LOAD DATE INFILE"のXML版だと思われます。bar氏はMySQLXMLインタフェース実装者でもありますので。



sql_yacc.yyへの実装を見るに、LOAD DATA INFILEと同じ作りになってました。

SQL実行例。

load xml infile '../std_data_ln/loadxml.dat' into table t1
rows identified by '<row>';

入力ファイル例。

<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="test">
	<table_structure name="t1">
		<field Field="a" Type="int(11)" Null="YES" Key="" Extra="" />
		<field Field="b" Type="varchar(128)" Null="YES" Key="" Extra="" />
		<options Name="t1" Engine="MyISAM" Version="10" Row_format="Dynamic" Rows="3" Avg_row_length="20" Data_length="60" Max_data_length="281474976710655" Index_length="1024" Data_free="0" Create_time="2007-02-09 09:08:36" Update_time="2007-02-09 09:08:54" Collation="latin1_swedish_ci" Create_options="" Comment="" />
	</table_structure>
	<table_data name="t1">
	<row>
		<field name="a">1</field>
		<field name="b">b1</field>
	</row>
	<row>
		<field name="a">2</field>
		<field name="b">b2</field>
	</row>
	<row>
		<field name="a">3</field>
		<field name="b">b3</field>
	</row>
	<row>
		<field name="a">11</field>
		<field name="b">b11</field>
	</row>
	
	<!-- Check field values as tags -->
	<row>
		<a>111</a>
		<b>b111</b>
	</row>

	<row>
		<a>112</a>
		<b>b112 & < > " ' -- check entities</b>
	</row>


	<!--
             Check where the field name is in an attribut
             and the value is in the tag
        -->

	<row>
		<field name='a'>212</field>
		<field name='b'>b212</field>
	</row>

	</table_data>
</database>
</mysqldump>