将嵌套的XML数据插入mysql数据库

时间:2019-05-10 12:21:56

标签: mysql xml database nested

我有一个带有一些表以及一些.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>'吗?)

0 个答案:

没有答案