sql 用openxml 将xml转换为数据表Table

时间:2022-08-27 09:54:38
CREATE PROCEDURE up_OpenXml
(
@xml XML
)
AS
BEGIN
DECLARE @Pointer INT
EXECUTE sp_xml_preparedocument @Pointer OUTPUT,@xml --指向内存中XML文档的句柄
SELECT * INTO People
FROM
OPENXML (@Pointer,'/People/Person',2) --根据句柄按一定规则打开对应字段
WITH
(
name NVARCHAR(20),
age INT,
sex NVARCHAR(10)
)
EXEC sp_xml_removedocument @Pointer --使用完后删除句柄
SELECT * FROM People
DROP TABLE People
END EXEC up_OpenXml '<People>
<Person>
<name> zhangsan</name>
<age>20</age>
<sex>man</sex>
</Person>
<Person>
<name> Lisi</name>
<age>20</age>
<sex>woman</sex>
</Person>
</People> '

sql 用openxml 将xml转换为数据表Table

 
openxml
语法
 
 OPENXML( idoc int [ in] , rowpattern nvarchar [ in ] , [ flags byte [ in ] ] ) 
[ WITH ( SchemaDeclaration | TableName ) ]
参数
 
idoc

XML 文档的内部表式形式的文档句柄。 通过调用 sp_xml_preparedocument 创建 XML 文档的内部表式形式。

rowpattern

XPath 模式,用来标识要作为行处理的节点(这些节点在 XML 文档中,该文档的句柄由 idoc 参数传递)。

flags

指示应在 XML 数据和关系行集间使用映射以及应如何填充溢出列。 flags 为可选输入参数,可以是下列值之一。

  

字节值

说明

0

默认为“以属性为中心”的映射。

1

使用“以属性为中心”的映射。 可以与 XML_ELEMENTS 一起使用。 这种情况下,首先应用“以属性为中心”的映射,然后对所有未处理的列应用“以元素为中心”的映射。

2

使用“以元素为中心”的映射。 可以与 XML_ATTRIBUTES 一起使用。 这种情况下,首先应用“以属性为中心”的映射,然后对所有未处理的列应用“以元素为中心”的映射。

8

可与 XML_ATTRIBUTES 或 XML_ELEMENTS 组合使用(逻辑或)。 在检索的上下文中,该标志指示不应将已使用的数据复制到溢出属性 @mp:xmltext

窗体的架构定义:ColNameColType [ColPattern | MetaProperty] [,ColNameColType [ColPattern |MetaProperty]...]

ColName

行集中的列名。

ColType

行集中列的 SQL Server 数据类型。 如果列类型不同于属性的基础 xml 数据类型,则将发生类型强制。

ColPattern

可选的通用 XPath 模式,它说明应如何将 XML 节点映射到列。 如果没有指定 ColPattern,则发生默认映射(由 flags 指定的“以属性为中心”或“以元素为中心”的映射)。

指定为 ColPattern 的 XPath 模式用于指定特殊的映射性质(如果发生“以属性为中心”和“以元素为中心”的映射),这些特殊的映射性质可以重写或增强由 flags 所指示的默认映射。

指定为 ColPattern 的通用 XPath 模式也支持元属性。

MetaProperty

由 OPENXML 提供的元属性之一。 如果指定 MetaProperty,则该列包含元属性提供的信息。 使用元属性可以提取有关 XML 节点的信息(如相对位置和命名空间信息)。 它提供了比文本表示形式更详细的信息。

TableName

如果具有所需架构的表已经存在且不要求列模式,则为给定的表名(而不是 SchemaDeclaration)。

 

sql 用openxml 将xml转换为数据表Table的更多相关文章

  1. mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现

    转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server ...

  2. PL&sol;SQL简单使用——导入、导出数据表

    1.使用PL/SQL导出.导入表 在使用PL/SQL操作oracle数据库时,经常使用的一个操作就是将自己写的数据表导出,或者想把他人的数据表导入到自己的数据库中.虽然是很简单的操作,但自己之前一直出 ...

  3. Sql Server利用游标批量清空数据表

    先吐槽一下,由于公司要为新客户部署一个全新的系统,然而公司并没有空库,所以只能把正在线上运行的数据库给备份,然后清空相关数据 下面分享一下我在做清空数据库时写的一个批量清空数据表的方法 思路:查询出该 ...

  4. 实战&colon;sqlserver 2008 扩展事件-XML转换为标准的table格式

    --假设已经存在Event Session删除 IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name='MonitorLongQu ...

  5. PL&sol;SQL 导入excel表格到oracle数据表

    通过使用PL/SQL 批量查询取数时,将excel中的每一列数据复制黏贴进新建的中间表,黏贴时会有贴歪的情况,也就是某些列会从第二第三行开始插入整列,导致数据乱掉,然后好像又不支持批量删除整列数据,所 ...

  6. 【SQL 数据库】将一张数据表信息复制到另一张数据表

    一.MySQL数据库 1.如果目标表存在 INSERT INTO 目标表  SELECT  * FROM 源表; 2.如果目标表不存在 CREATE TABLE 目标表 SELECT * FROM   ...

  7. MS SQL Server中数据表、视图、函数&sol;方法、存储过程是否存在判断及创建

    前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...

  8. 【SQL Sever】将SQL Sever中的一个数据表的数据导出为insert语句

    例如:这SQL   Sever中的一张数据表,想要将这张数据表中的数据  转化成一个一个的insert语句存储在txt的文档中,那么不论走到那里这个insert语句一执行,我们就能将这个数据表中的数据 ...

  9. SQL &colon; 在SQL Server 2008&lpar;Or Express&rpar;中如何Open并编辑数据表【转】

    来源:http://www.cnblogs.com/wsdj-ITtech/archive/2011/04/28/2031601.html 通常在SQL Server 2005中,我们可以通过SQL ...

随机推荐

  1. Asp&period;Net MVC&lt&semi;六&gt&semi;:Controller、Action 待续

    控制器 抽象类Controller Visual Studio的向导创建的Controller类型继承自抽象类Controller. 它是ControllerBase的子类. 实现了IControll ...

  2. BZOJ 2733 &amp&semi; splay的合并

    题意: 带权联通块,添边与查询联通块中第k大. SOL: splay合并+并查集. 我以为splay可以用奇技淫巧来简单合并...调了一下午终于幡然醒悟...于是就只好一个一个慢慢插...什么启发式合 ...

  3. PHP7革新与性能优化

    有幸参与2015年的PHP技术峰会(PHPCON),听了鸟哥(惠新宸)的关于PHP7的新特性和性能优化的分享,一切都令人感到激动.鸟哥是国内最权威的PHP专家,他的分享有很多非常有价值的东西,我通过整 ...

  4. sql新建数据库表,及添加多个主键

    create table tb_Modules(module_Id int identity(1,1) primary key,  (自增)model_Name varchar(50) not nul ...

  5. python docopt模块详解

    python docopt模块详解 docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用 """ ""&q ...

  6. suse 关于使用 &sol;etc&sol;init&period;d&sol;boot&period;local的问题

    最近看了一个问题,有同事在 suse环境下的/etc/init.d/boot.local 中,增加了一行脚本. 该脚本的简单大意如下: #!/bin/bash ] do ] then echo &qu ...

  7. Does Deep Learning Come from the Devil&quest;

    Does Deep Learning Come from the Devil? Deep learning has revolutionized computer vision and natural ...

  8. 算法笔记&lowbar;221&colon;串的简单处理&lpar;Java&rpar;

    目录 1 问题描述 2 解决方案   1 问题描述 串的处理在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求程序对用户输入的串进行处理.具体规则如下:1. 把每个单词的首字母变为大 ...

  9. 【转】雅典娜与宙斯的对话&period;&lpar;kerberos原理&rpar;

    1 八月 2010 22:07:51关于Kerberos的对话(MIT)雅典娜与宙斯 雅典娜与宙斯关于地狱之门守护者的对话 Kerberos: Network Authentication Proto ...

  10. FastDFS 双tracker负载均衡 及多组存储配置

    应用场景: 三台服务器分别做三组存储,并且需要两台tracker地址做主备关系,当一台down机后需要另外一台可以提供正常的访问连接 #注:此处不考虑存储数据安全性,如果需要保障数据不丢失,可以分别每 ...