2016-05-17 16 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

3つの列があります。idはプライマリキー(varchar)、名前はテキスト、値は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

関連する問題