大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 数据库 -> MS_SQL -> SQL Server中读取XML文件的简单做法

SQL Server中读取XML文件的简单做法

时间: 2021-08-13 作者:daque

sql server 2000使得以xml导出数据变得越发大略,但在sql server 2000中导出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(255) declare @execcmd varchar(255) declare @y int declare @x int declare @filecontents varchar(8000) create table #tempxml(pk int not null identity(1,1), thisline varchar(255)) 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 = 0 while @x <> @y begin set @x = @x + 1 select @filecontents = @filecontents + thisline from #tempxml where pk = @x end select @filecontents as filecontents drop table #tempxml    此刻在变量@filecontents变量中你仍旧赢得了文献的十足实质。所须要做的不过将变量经过@xmltext参数传播给sp_xml_preparedocument,而后再挪用openxml。   有了这种处置方法,对xml文书档案举行百般处置就变成了大概。你不妨将xml文书档案同sql表格贯穿在一道而无需导出数据,而后对那些数据举行insert、pdate和delete等任何操纵。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.