将具有指定为属性的内容的XML导入MySQL表中?

时间:2013-12-12 19:47:50

标签: mysql xml

我有一个如下所示的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<comments>
  <row Id="1" PostId="1" Score="3" Text="Maxis uses this in The Sims when clicking on your person to perform actions. ex: call-&gt;friend-&gt;[friends name]" CreationDate="2010-08-09T19:52:30.690" UserId="12" />
  <row Id="2" PostId="1" Score="1" Text="Here are some examples: http://en.wikipedia.org/wiki/Pie_menu#Notable_implementations" CreationDate="2010-08-09T19:54:54.007" UserId="31" />
  <row Id="3" PostId="9" Score="13" Text="How about making it short and with less steps :)" CreationDate="2010-08-09T19:55:57.670" UserId="35" />
  <row Id="4" PostId="3" Score="1" Text="10 sec seems like an awful lot when you are browsing." CreationDate="2010-08-09T19:57:57.057" UserId="32" />
  ...
</comments>

我环顾四周找到this slightly related question,但它的行看起来像这样:

<row>
  <field name="personal_number">539</field>
  <field name="firstname">Name</field>
  <field name="lastname">Surname</field>
  <field name="email">email.domain.com</field>
  <field name="start_time">2011-04-02 13:30:00</field>
  <field name="end_time">2011-04-02 18:15:00</field>
  <field name="employee_category">1,2,4,5,22,37,38,39,41,43,44</field>
</row>

每行的每个字段都有一个XML元素 - 而不是每个行的单个元素,内容被指定为属性,就像我一样。

如何将其导入MySQL?我可以使用任何技术,但我宁愿远离任何需要Windows的东西。

1 个答案:

答案 0 :(得分:1)

有关LOAD XML INFILE语句支持的XML格式,请参阅http://dev.mysql.com/doc/refman/5.6/en/load-xml.html

手册页说明:

  

导入例程会自动检测每行的格式并正确解释。根据标签或属性名称和列名匹配标签。

支持的格式之一与您的格式类似 - 将列存储为<row>元素的属性。

如果您需要将XML数据转换为MySQL的LOAD XML支持的格式之一,则可以使用xsltproc

我认为如果您的XML数据格式不完整,那么它会混淆LOAD XML INFILE。