mysql - 将嵌套的 XML 数据插入 mysql 数据库
问题描述
我有一个带有一些表和一些 .csv 和 .xml 文件的 mysql 数据库。我插入 csv 文件没有问题,但我的两个 .xml 文件有问题,因为它们具有嵌套属性。我知道如何使用 php 导入这些文件,但我希望只有一个 .sql 脚本导入我的所有文件。
我的 TABLE 看起来像这样
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| UserID | int(11) | NO | PRI | NULL | |
| LName | varchar(256) | NO | | NULL | |
| FName | varchar(256) | NO | | NULL | |
| UserPhoneNb | char(10) | NO | | NULL | |
| City | varchar(256) | NO | | NULL | |
| PostalCode | char(4) | NO | | NULL | |
| Street | varchar(256) | NO | | NULL | |
| HouseNb | int(11) | NO | | NULL | |
+-------------+--------------+------+-----+---------+-------+
和这样的xml文件。
<users>
<user>
<ID>0</ID>
<lastname>CROCHEMORE</lastname>
<firstname>Abdel</firstname>
<password>8308</password>
<phone>0482642387</phone>
<address>
<city>Saint-Gilles</city>
<cp>1060</cp>
<street>rue Steens</street>
<number>96</number>
</address>
<bankaccount>4506690518145656</bankaccount>
</user>
<user>
<ID>1</ID>
<lastname>BOURDON</lastname>
<etc...>
</user>
</users>
我最初尝试过这样的事情
LOAD XML LOCAL INFILE 'path/to/my/file.xml'
INTO TABLE ChargeUsers
ROWS IDENTIFIED BY '<user>'
(@ID,@lastname,@firstname,@phone,@city,@cp,@street,@number)
SET UserID=@ID, LNAME=@lastname, FName=@firstname, UserPhonNb=@phone,
Street=@street, City=@city, PostalCode=@cp;
这确实适用于地址之外的所有字段,但不适用于地址内的字段。这是因为地址字段是嵌套的,它似乎不是mysql LOAD XML 文档中列出的三种不同格式之一。
是否有任何方法可以在纯 sql(没有 php)中做到这一点。或者有没有一种简单的方法来更改我的 xml 文件,以便它可以与 LOAD XML 一起使用?
(也许有一种方法使用ROWS IDENTIFIED BY '<address>'
而不是'<user>'
?)
解决方案
推荐阅读
- image - 如何在 SwiftUI 中捏合和滚动图像?
- mysql - 如何通过 MySQL 查询选择多个登录?
- excel - VBA Excel - Power Query 等待刷新,然后继续
- c# - 区分 getter-only 属性和表达式主体属性?
- javascript - 在javascript中调用父构造函数
- ejs - 浏览器支持的 ejs 下载在哪里?
- azure-active-directory - 如何使用 adal-angular5 更新我的 AAD 会话?
- json - 将映射应用于单个 JSLT 转换中的字段子集
- json - 解析 Azure ARM 模板文件中的变量
- c++ - 构建 Google 测试项目时对“getcwd”和“mkdir”的未定义引用