在MySQL中使用XML数据—数据格式化

来源:IT168 时间:2009-12-29 10:26:00 

在上一篇文章中,我介绍了MySQL对XML支持的部分功能,包括--xml命令行选项,以及MySQL 5.1.5中开始引入的新功能。今天我将介绍如何更好地格式化XML输出内容。

在ExtractValue()函数输出中添加我们自己的标题

在上一篇文章中,我们使用LOAD_FILE()函数导入了一个XML文档,然后使用ExtractValue()函数提取了某些字段。

CREATE TEMPORARY TABLE client_citizenship (

  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

  xml_data TEXT NOT NULL

  );

  SET @xml = LOAD_FILE("c:\client_citizenships.xml");

  INSERT INTO client_citizenship VALUES (NULL, @xml);

  SELECT xml_data FROM client_citizenship LIMIT 1 INTO @xml;

  SELECT ExtractValue(@xml, '//row[2]/field[1]/@name'),

  ExtractValue(@xml, '//row[2]/field[1]');


最后一个SELECT语句提取的是第二个节点中的第一个。

...
</row>
<row> (row[2])
    <field name="client_id">2</field> (field[1])
    <field name="date_of_birth">1944-01-15</field>
...

其结果集如下:



+----------------------------------------------+----------------------------------------+
|ExtractValue(@xml, "//row[2]/field[1]/@name") |ExtractValue(@xml, '//row[2]/field[1]') |
+----------------------------------------------+----------------------------------------+
|client_id                                     |2                                       |
+----------------------------------------------+----------------------------------------+

注意MySQL使用的是表达式作为列的标题,为了使用列字段名格式化结果集的标题,我们需要使用Prepared Statement,Prepared Statement是一种特殊类型的SQL语句,它是预编译的,这意味着Prepared Statement执行时,数据库不用再编译SQL了,这样可以有效减少执行时间。在这个例子中,使用Prepared Statement的好处是可以设置标题,然后连接到我们的查询字符串中。 


SET @header = SELECT ExtractValue(@xml, "//row[2]/field[1]/@name");
SET @qry = CONCAT("SELECT ExtractValue(@xml, "//row[2]/field[1]") AS ", @header, ";");
PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

现在我们看到的数据格式就是和我们平时看到的一样了。 



+-----------+
| client_id |
+-----------+
| 2           |
+-----------+

标签:xml,mysql,格式化
0
投稿

猜你喜欢

  • js中string转int把String类型转化成int类型

    2024-05-03 15:30:11
  • openCV提取图像中的矩形区域

    2022-06-11 06:38:55
  • tensorflow对图像进行拼接的例子

    2022-05-30 02:11:49
  • javascript 精确获取样式属性(上)

    2024-04-17 09:45:37
  • 百度编辑器复制微信图片无法保存

    2023-08-14 17:32:46
  • 详解model.train()和model.eval()两种模式的原理与用法

    2021-03-20 08:46:56
  • Python模拟登录网易云音乐并自动签到

    2023-05-28 03:10:05
  • 浅谈Python中的异常和JSON读写数据的实现

    2021-02-07 10:41:16
  • Python参数解析器configparser简介

    2021-04-22 02:23:31
  • Python tkinter padx参数详解

    2022-03-12 06:09:50
  • Python中几种操作字符串的方法的介绍

    2021-06-16 22:50:06
  • Python global全局变量函数详解

    2023-02-02 07:00:17
  • python实现记事本功能

    2022-04-02 09:54:19
  • python中isdigit() isalpha()用于判断字符串的类型问题

    2023-05-02 18:52:48
  • python之语句mode = 'test' if y is None else 'train'问题

    2021-02-04 20:35:17
  • 对python dataframe逻辑取值的方法详解

    2021-08-23 03:09:38
  • 零基础写python爬虫之抓取糗事百科代码分享

    2021-02-01 11:54:39
  • 实战手记:让百万级数据瞬间导入SQL Server

    2010-06-07 14:13:00
  • javascript验证IP地址等验证例子

    2007-09-11 13:40:00
  • ASP中如何判断字符串中是否包含字母和数字

    2009-07-10 13:12:00
  • asp之家 网络编程 m.aspxhome.com