新SQLコマンド LOAD XML INFILE
# 約10日間の夏休みが終わり、今日から復帰です。ずっとオフライン環境にいたので、えらい事になってます^^;
まずは、ver5.1における新SQLコマンドの追加の話題から。
http://lists.mysql.com/commits/19615
bar氏が"LOAD XML INFILE"というコマンドを実装したようです。文章での説明がまだ見当たらないのでソースを読んで憶測するしかないですが、"LOAD DATE INFILE"のXML版だと思われます。bar氏はMySQLのXMLインタフェース実装者でもありますので。
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>