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

Posted

技术标签:

【中文标题】如何使用 XML_LOAD() 将 XML 文件导入 MySQL 数据库表;功能【英文标题】:How to import XML file into MySQL database table using XML_LOAD(); function 【发布时间】:2011-07-26 08:26:33 【问题描述】:

我有一个如下所示的 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,而该字段 id 不存在于 XML 文件中。如何使用内置函数的 MySQL 查询导入此 XML 文件,以便在导入期间跳过 id 列并依赖 id 列的自动增量函数? 是否有一些更聪明的方式来处理 MySQL 中的 XML 文件导入? 也许有更好的语句可以指定列映射?

谢谢!

【问题讨论】:

对于 mysql 5.1 阅读此内容:dev.mysql.com/doc/refman/5.5/en/load-xml.html“用户评论”部分 【参考方案1】:

您可以像这样指定字段:

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

【讨论】:

【参考方案2】:

由于 ID 是自增的,你也可以指定 ID=NULL 为,

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

【讨论】:

以上是关于如何使用 XML_LOAD() 将 XML 文件导入 MySQL 数据库表;功能的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS基础篇——如何将模型导成py文件?

txt如何转换成bin或xml格式?

如何使用processon制作思维导图

Excel导出xml时提示“无法保存或者导出XML数据,此工作薄中XML映射不可导出(xml映射随便导的)请问怎么办

思维导图XMind使用技巧

学生管理系统导包