在数据处理和系统集成场景中,把XML文件导入MySQL数据库是常见需求。MySQL从5.5版本开始支持LOAD XML语法,可以直接通过命令行将XML中的数据写入数据表,适合批量导入和自动化脚本处理。

一、准备XML文件与数据表
假设我们有一个用户数据XML文件users.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<users>
<row>
<id>1</id>
<name>张三</name>
<age>28</age>
</row>
<row>
<id>2</id>
<name>李四</name>
<age>32</age>
</row>
</users>
在MySQL中创建对应的表:
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), age INT );
二、使用LOAD XML命令导入
登录MySQL命令行客户端后,执行如下语句即可加载XML:
LOAD XML LOCAL INFILE '/path/to/users.xml' INTO TABLE users ROWS IDENTIFIED BY '<row>';
其中ROWS IDENTIFIED BY用来指定每条记录对应的XML节点标签,这里使用转义后的<row>表示row元素。
通过命令行一步执行
如果不进入交互式客户端,也可以用mysql命令直接运行:
mysql -u root -p testdb -e "LOAD XML LOCAL INFILE '/path/to/users.xml' INTO TABLE users ROWS IDENTIFIED BY '<row>';"
三、常见注意事项
- 需要开启local_infile参数,可在命令行加--local-infile=1。
- XML中的标签名应与表字段名一致,或按顺序映射。
- 文件路径应使用服务器或客户端可访问的绝对路径。
四、字段顺序映射示例
当XML标签顺序与表字段顺序一致时,也可不写列名:
LOAD XML LOCAL INFILE '/path/to/users.xml' INTO TABLE users ROWS IDENTIFIED BY '<row>';
若标签名和字段名不同,可使用SET子句转换:
LOAD XML LOCAL INFILE '/path/to/users.xml' INTO TABLE users ROWS IDENTIFIED BY '<row>' SET name = @name;
五、错误排查
如果遇到报错,可检查XML格式是否合法,以及是否遗漏了LOCAL关键字。使用命令行导入XML数据到MySQL,整体流程简单且易于写成脚本,适合常规数据接入工作。