【发布时间】:2019-12-26 05:08:37
【问题描述】:
我需要直接从 xml 文件中提取值,精确到一个字段,但我总是得到 NULL 值。
将文件导入表没有问题。该文件位于 c:\xampp\mysql\data\test_folder\test_file.xml。
我用这种方式导入:
LOAD XML INFILE 'test_file.xml'
INTO TABLE tbl_tutorials
CHARACTER SET utf8
ROWS IDENTIFIED BY '<row>'
;
我已经用这种方式创建了表格
CREATE TABLE IF NOT EXISTS tbl_tutorials(
item_id INT(11) NOT NULL,
title VARCHAR(100) NOT NULL,
link VARCHAR(120) NOT NULL,
description VARCHAR(400) NOT NULL,
keywords VARCHAR (50) NOT NULL
) ;
我的 test_file.xml 是这个
<?xml version="1.0" encoding="UTF-8"?>
<tbl_tutorials>
<row>
<item_id>1</item_id>
<title>test title 1</title>
<link>test link 1</link>
<description>test description 1</description>
<keywords>test keyword 1</keywords>
</row>
<row>
<item_id>2</item_id>
<title>test title 2</title>
<link>test link 2</link>
<description>test description 2</description>
<keywords>test keyword 2</keywords>
</row>
<row>
<item_id>3</item_id>
<title>test title 3</title>
<link>test link 3</link>
<description>test description 3</description>
<keywords>test keyword 3</keywords>
</row>
</tbl_tutorials>
我要做的是创建一个包含所有 xml 代码的“var”(不知道这是否是准确的术语),然后从该 var 中提取所需的值。
这样……
SET @xmlFile = load_file('c:\xampp\mysql\data\test_folder\test_file.xml ');
SELECT extractvalue(@xmlFile , '/tbl_tutorials/row/keywords') keywords;
我得到的是
------------
| keywords |
------------
|NULL |
------------
而我需要的是
----------------
| keywords |
----------------
|test keyword 1|
----------------
我认为我必须准确指定需要哪个子元素,但我不知道为什么总是返回 null。
我正在使用 mySql 工作台和 Xampp
谢谢大家
编辑
我刚刚在文件路径中添加了另一个“\”反斜杠,现在提取值返回“blob”,这样
SET @xmlFile = load_file('c:\\xampp\\mysql\\data\\test_folder\\test_file.xml ');
------------
| keywords |
------------
|BLOB |
------------
【问题讨论】: