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

问题描述:

我有一个看起来像这样的XML文件:如何使用XML_LOAD()将XML文件导入到MySQL数据库表中;功能

<?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的56年5月1日

我假设,因为数据库表有字段id,这是不存在的,就会出现此错误XML文件。如何使用内置函数的MySQL查询导入此XML文件,以便在导入期间跳过id列并依赖id列的自动递增函数? 有没有更聪明的方式处理XML文件导入im MySQL? 也许有更好的语句允许指定列映射?

谢谢!

+0

for mysql 5.1阅读此:https://dev.mysql.com/doc/refman/5.5/en/load-xml.html“用户评论”部分 – hakre 2015-03-28 20:34:43

你可以像这样指定字段:

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;