我有一个带有一些表以及一些.csv和.xml文件的mysql数据库。我插入csv文件没有问题,但是我的两个.xml文件存在问题,因为它们具有嵌套属性。 我知道如何使用php导入这些文件,但我只想用一个.sql脚本导入我的所有文件。
我的桌子看起来像这样
+-------------+--------------+------+-----+---------+-------+
| 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;
这确实适用于address以外的所有字段,但不适用于address内的所有字段。这是因为地址字段是嵌套的,并且似乎不是mysql LOAD XML documentation中列出的三种不同格式之一。
尽管有任何方法可以在纯sql中(没有php)做到这一点。还是有一种简单的方法来更改我的xml文件,使其可以与LOAD XML一起使用?
(也许可以使用ROWS IDENTIFIED BY '<address>'
代替'<user>'
吗?)