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> '

 
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/SQL简单使用——导入、导出数据表

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

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

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

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

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

  5. PL/SQL 导入excel表格到oracle数据表

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

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

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

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

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

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

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

  9. SQL : 在SQL Server 2008(Or Express)中如何Open并编辑数据表【转】

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

随机推荐

  1. jQuery模拟点击A标记

    这个问题弄了半小时没想明白,后来觉得是这样的. 菜单 <li class="menu"><a href="xxx.com" target=&q ...

  2. js函数的各种写法与调用

    以下是我见过的各种js函数的各种写法以及调用,虽然有些写法及其调用我不清楚其专业术语叫啥,但并不影响我写一个总结笔记. 我们刚开始接触js语音,经常看到的这种名叫“使用function关键字来定义函数 ...

  3. Spark学习笔记--stage和task的划分

    https://github.com/JerryLead/SparkInternals/blob/master/markdown/3-JobPhysicalPlan.md stage 和 task 的 ...

  4. angularjs学习笔记—事件指令

    ngClick 适用标签:所有触发条件:单击 #html <div ng-controller="LearnCtrl"> <div ng-click=" ...

  5. sql delete output

    select * into #student1 from student select * from #student1 create table #temp2( id int not null,na ...

  6. 新鲜出炉的awk代码

    echo "" | igawk -f main.awk # 需求:按照多种充值方式的多种金额类型进行累加统计 # 充值方式:移动卡 ,,,100元,联通卡20,,, 电信卡 ,,, ...

  7. Python字符串处理NoneType的处理

    Python合并处理字符串的四种方法在这里都有介绍: http://www.cnblogs.com/heshizhu/archive/2012/01/11/2319892.html 无论使用最简单的+ ...

  8. TVS_压敏电阻等保护类器件的布局问题

    世上本没有垃圾,垃圾都是放错了位置的资源. 对于电路来说,保护器件就是其保护作用的关键资源,但如果放错了位置,它就是垃圾:甚至不仅是垃圾,而还可能成为祸害. 由最近承接的几起电路原理图审核项目来看,触 ...

  9. windows bat命令编写大全

    1 echo 和 @ @  #关闭单行回显echo off #从下一行开始关闭回显 @echo off  #从本行开始关闭回显.一般批处理第一行都是这个 echo on  #从下一行开始打开回显 ec ...

  10. Qt下使用的静态链接库------ *.lib转化为mingw使用的.a格式的静态库

    使用MinGW附带的工具reimp.exe,该工具一般在MinGW in目录下,其readme文档在MinGWdoc eimp目录下, 方法很简单,比如: C:CodeBlocksMinGWlibdx ...