如何使用XML_LOAD()将XML文件导入到MySQL数据库表中 function

我有一个XML文件,看起来像这样:

<?xml version="1.0" encoding="UTF-8"?> <resultset statement="YOUR SQL STATEMENTS TO GENERATE THIS XML FILE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <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> <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> <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> 

我正在尝试使用SQL语句在MySQL中导入它:

 use databasename; LOAD XML LOCAL INFILE '/pathtofile/file.xml' INTO TABLE my_tablename; 

表my_tablename具有以下字段:

 id (auto increment id) personal_number(varchar) firstname(varchar) lastname(varchar) email(varchar) start_time(varchar) end_time(varchar) employee_category(varchar) 

我得到错误:错误代码:1136列数不匹配第1行的值计数

我正在使用MySQL 5.1.56

我假设发生此错误的原因是数据库表具有字段ID,它不存在于XML文件中。 如何导入这个XML文件使用内置函数的MySQL查询,以便它在导入过程中跳过id列,并依赖id列的自动递增function? 有没有更聪明的方式来处理XML文件导入MySQL? 也许有更好的语句,允许指定列映射?

谢谢!

你可以指定这样的字段:

 LOAD XML LOCAL INFILE '/pathtofile/file.xml' INTO TABLE my_tablename(personal_number, firstname, ...); 

由于ID是自动增量,所以您也可以指定ID = NULL,

LOAD XML LOCAL INFILE'/pathtofile/file.xml'INTO TABLE my_tablename SET ID = NULL;