xml 到 phpmyadmin 创建了太多行

xml to phpmyadmin creates too many rows

这里是新手,正在尝试将 "shoedept or ShoeDept, , 30%off special,Top quality design,latitude,longitude" 从 file.xml 提取到 phpmyadmin 数据库。 myTable,看起来很固执,无法更改,相同的字段以相同的顺序排列,只是名称不同;类型、价格、标题、描述、纬度、经度。

<source>
<id>shoedept</id>
<name>ShoeDept</name>
</source>
<location>
<address>174 Sioux</address>
<zip>48228</zip>
<citycode>usa:mi:detroit</citycode>
<name>Detroit</name>
<state>MI</state>
<country>USA</country>
<latitude>42.4089</latitude>
<longitude>-82.9432</longitude>
</location>
<images/>
<time>1444207824</time>
<paid>No</paid>
<score>1</score>
<user/>
<url>
http://................
</url>
<attributes>
<features>Leather</features>
<men>1</men>
<women>2</women>
<currency>USD</currency>
<fee>No</fee>
<has_pic>No</has_pic>
<price>50</price>
<price_display></price_display>
</attributes>
</element>
<element>
<id>4030773537</id>
<title>
 / special
</title>
<body>
Top quality design
</body>

我写这个声明;

LOAD DATA INFILE "file.xml" INTO TABLE myTable(headline,description.....) 

我得到了很多行,其中列出了所有不需要的垃圾。我只想要整个块中的一行,并将字段列为列。当我尝试使用

ROWS IDENTIFIED BY '<field>';

将其压缩成一行,会引发错误。然后我尝试创建一个临时文件 table 并在下面没有希望的情况下将数据强制写入 myTable;

LOAD DATA INFILE "file.xml";
UPDATE tmp SET DEFAULT = 'file.xml';
INSERT INTO myTable SELECT * FROM tmp;

非常感谢

INFILE 必须是文本文件。也许你可以用这个工具转换它: http://www.convertcsv.com/xml-to-csv.htm 或类似的东西。

然后将 .csv 文件导入数据库。

正如@Marc B 提到的,有一个 LOAD XML 命令(https://dev.mysql.com/doc/refman/5.5/en/load-xml.html)。