知识大全 SQLServer读取XML文件的做法

Posted 变量

篇首语:千教万教教人求真,千学万学学做真人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQLServer读取XML文件的做法相关的知识,希望对你有一定的参考价值。

SQLServer读取XML文件的做法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  SQL Server 使得以XML导出数据变得更加简单 但在SQL Server 中导入XML数据并对其进行处理则有些麻烦

  如果你参考Books Online(BOL) 你会发现有相关的条目 包括OPENXML以及 OPENROWSET 所有的这些例子都支持将XML文本作为已经声明的变量 这对于经常处理文本的用户来说非常方便 但对于希望在开发中读取XML文件并进行相应处理的开发人员来说就不是这样了 处理这样的问题 或许最好从内到外来对其进行分析

  OPENXML是一个rowset函数(即返回一个rowset) 它的工作方式类似于rowset函数OPENQUERY和 OPENROWSET 使用OPENXML可以对XML数据执行JOINs操作而无需首先导入数据 你还可以将其同INSERT SELECT UPDATE以及DELETE等操作联合使用 然而 要使用OPENXML 你必须执行两项OPENQUERY和OPENROWSET并不需要的任务 这两项任务需要两个系统存储进程 第一个是sp_xml_preparedocument 它将读取特定的XML文本并将其内容提取到内存中 其语法如下

  sp_xml_preparedocument @hdoc = OUTPUT

  [ @xmltext = ]

  [ @xpath_namespaces =

  具体参数如下 @hdoc 指向某内存区域的句柄(从作用上看等同于一个指针) 相关数据存放在这里 注意这是一个输出变量 当该进程运行后 该变量将包含指向XML文件内容在内存地址的句柄 由于你需要在随后使用此结果 因此要确保对其进行保存; @xmltext 实际上你所希望处理的XML文本; @xml_namespaces 为了正常操作你的XML数据所需要的任何名字空间索引(namespace references) 注意在这里出现的任何URL都需要用尖括号(< >)括起来; 假设所传递的这些参数都有效 并且XML文档存在 那么你的XML数据就会被存放到内存中去 现在你就可以调用 sp_xml_preparedocument 传递存放有XML文件的变量 然后执行OPENXML 语法如下

  OPENXML(idocint [in] rowpatternnvarchar[in] [flagsbyte[in]])

  [WITH (SchemaDeclaration | TableName)]

  注意 在本文中没有足够的文字来描述OPENXML所接收的参数 请参阅BOL以获取更多信息 在Transact SQL Reference中查找OPENXML

  现在我们已经到达了最后的步骤 所有剩下的工作就是导入一个实际的XML文件到SQL并进行处理(很奇快为什么所有的BOL示例都没有涉及到这一关键的部分) (我必须感谢我的同事Billy Pang所给予的帮助 他帮助我解决这个问题 并给出了代码——尽管出于本文需要我对代码进行了裁减 谢谢Billy!) 基本的技巧是 将文件逐行按文本读取 然后把所有读取的行连接为一个大的VARCHAR变量 最后 将变量传递给前面所说的代码

  以下就是读取文件并将其内容存放到某变量的代码

  DECLARE @FileName varchar( )

  DECLARE @ExecCmd VARCHAR( )

  DECLARE @y INT

  DECLARE @x INT

  DECLARE @FileContents VARCHAR( )

  CREATE TABLE #tempXML(PK INT NOT NULL IDENTITY( ) ThisLine VARCHAR( ))

  SET @FileName = C:\\Temp\\CurrentSettings xml

  SET @ExecCmd = type + @FileName

  SET @FileContents =

  INSERT INTO #tempXML EXEC master dbo xp_cmdshell @ExecCmd

  SELECT @y = count(*) from #tempXML

  SET @x =

  WHILE @x < > @y

  BEGIN

  SET @x = @x +

  SELECT @FileContents = @FileContents + ThisLine from #tempXML WHERE PK

  = @x

  END

  SELECT @FileContents as FileContents

  DROP TABLE #tempXML

  现在在变量@FileContents变量中你已经获得了文件的全部内容 所需要做的只是将变量通过@xmltext参数传递给sp_xml_preparedocument 然后再调用OPENXML

cha138/Article/program/SQLServer/201311/22101

相关参考

知识大全 XML文件的读取[2]

PHP网络开发详解:XML文件的读取[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 XML文件的读取[1]

PHP网络开发详解:XML文件的读取[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 spring中读取xml配置文件、获取bean

  读取xml文件  /**  *利用XmlBeanFactory(Resourceresource)  *这里Resource必须是xml格式  *Resource包括AbstractResourc

知识大全 Java读取xml文件的四种方法

Java读取xml文件的四种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  xml文件  X

知识大全 ASP实例:读取xml文件的程序

ASP实例:读取xml文件的程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!strSourceF

知识大全 读取扩展名为xml的资源文件的方法

    今天重构代码时想把如下xml文件嵌入程序集中在运行时读取    <?xmlversion=encoding

知识大全 JAVA读取xml文件中节点值

JAVA读取xml文件中节点值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  importwcd

知识大全 如何将 XML 文件导入 SQL Server 2000

如何将XML文件导入SQLServer2000  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  导

知识大全 在VisualC#中使用XML指南之读取XML

在VisualC#中使用XML指南之读取XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!对于X

知识大全 用Ajax读取XML格式的数

用Ajax读取XML格式的数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用Ajax读取XML