2016-05-17 70 views
1

我打算用LOAD XML INFILE函數將xml文件加載到我的數據庫中。它的工作原理,但我現在面臨的問題與這種類型的XML:加載格式不正確的xml文件

<response> 
    <point id="DP_032113" name="data1" value="18.0"/> 
    <point id="DP_042113" name="data2" value="190"/> 
    <point id="DP_032753" name="data1" value="14.0"/> 
</response> 

如果我添加:

ROWS IDENTIFIED BY '<point>' 

我的結果:子查詢返回不止一行。

如果我不添加這一行,我有這樣的結果:0行受到影響。

我知道這行「ROWS IDENTIFIED BY」在這種情況下無法正常工作,但我無法更改xml格式的答案,因爲它來自Web服務器:/。

你知道如何在我的數據庫中加載這個xml文件嗎?

+0

你能後的表結構和預期的結果? – wchiquito

+0

有三列:作爲初始密鑰(varchar)的id,作爲文本的名稱和作爲float的值。我需要刷新數據點的值。 – Yohan

回答

0

嘗試:

文件:'/path/to/file/point.xml'

<response> 
    <point id="DP_032113" name="data1" value="18.0"/> 
    <point id="DP_042113" name="data2" value="190"/> 
    <point id="DP_032753" name="data1" value="14.0"/> 
</response> 

mysql命令行:

mysql> DROP TABLE IF EXISTS `point`; 
Query OK, 0 rows affected (0.01 sec) 

mysql> CREATE TABLE `point` (
    -> `id` VARCHAR(9) NOT NULL PRIMARY KEY, 
    -> `name` TEXT, 
    -> `value` DECIMAL(7, 2) 
    ->); 
Query OK, 0 rows affected (0.00 sec) 

mysql> LOAD XML LOCAL INFILE '/path/to/file/point.xml' 
    -> INTO TABLE `point` 
    -> ROWS IDENTIFIED BY '<point>'; 
Query OK, 3 rows affected (0.00 sec) 
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 

mysql> SELECT 
    -> `id`, 
    -> `name`, 
    -> `value` 
    -> FROM 
    -> `point`; 
+-----------+-------+--------+ 
| id  | name | value | 
+-----------+-------+--------+ 
| DP_032113 | data1 | 18.00 | 
| DP_032753 | data1 | 14.00 | 
| DP_042113 | data2 | 190.00 | 
+-----------+-------+--------+ 
3 rows in set (0.00 sec) 
+0

它的工作原理,我不知道有什麼改變。不過,謝謝。 – Yohan