关于SQL Server 2005中XML数据统计问题 40nxfdownload]

发布时间:2017-3-23 20:27:09 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"关于SQL Server 2005中XML数据统计问题 40nxfdownload]",主要涉及到关于SQL Server 2005中XML数据统计问题 40nxfdownload]方面的内容,对于关于SQL Server 2005中XML数据统计问题 40nxfdownload]感兴趣的同学可以参考一下。

请问大家一个问题,现在做的项目由于数据量比较大,所以想把数据先存入XML文件,在同一个文件夹下为每为客户建一个XMl文件,再通过SQL Server 2005定时读取所有XML,进行处理统计!因为是定时处理,我只知道SQL2005可以,但不知道怎么用SQL语句读取某个文件夹下所有XML文件,进行遍历! 还有一个XML文件格式比如: <User> <name/> <age/> <login> <ip>...</ip> <date>...</date> </login> <login> <ip>...</ip> <date>...</date> </login> <login> <ip>...</ip> <date>...</date> </login> ... </User> 怎么获取每个<login></login>节点里的信息,要循环吗?因为要进行判断处理再统计 希望有经验的朋友为我指导指导,或给我其他比较好的方案,因为每秒钟要添加很多条记录,数据库会比较慢吧

不用循环.. [email protected] SELECT     T.x.value('ip[1]','varchar(15)') AS ip,     T.x.value('date[1]','datetime') AS date FROM @xml.nodes('/User/login') AS T(x);

要得到某个文件夹下的所有xml文件.使用xp_cmdshell执行dir命令就可以了.

DECLARE @tb TABLE(FullPath NVARCHAR(1024)); INSERT @tb EXEC master.dbo.xp_cmdshell N'dir C:\*.xml /b' DELETE @tb WHERE FullPath IS NULL SELECT * FROM @tb;

为每秒钟要添加很多条记录,这样最好不用XML。

有具体代码吗,循环写多了我

xml是没有办法的办法。慎用

xml操作查看联机丛书,讲的还是比较到位的。

那还是存数据库吗,这样客户会影响速度的吧!一个请求先访问一次数据库,判断一下,通过的话再把客户端许多信息存入XML,再响应客户,比如登录或跳转

FILE1.xml <User>      <name>LiangCK</name>      <age>21</age>      <login>         <ip>192.168.1.1</ip>         <date>2009-12-21 </date>      </login>      <login>         <ip>192.168.1.1</ip>         <date>2009-5-21 </date>      </login>      <login>         <ip>192.168.1.5 </ip>         <date>2009-02-12</date>      </login>  </User>  FILE2.xml <User>      <name>hui</name>      <age>21</age>      <login>         <ip>192.168.20.2</ip>         <date>2009-12-21 </date>      </login>      <login>         <ip>192.168.3.1</ip>         <date>2009-5-21 </date>      </login>      <login>         <ip>192.168.1.5 </ip>         <date>2009-02-12</date>      </login>  </User>  DECLARE @tb TABLE(ID INT IDENTITY,FileName NVARCHAR(1024),doc XML); DECLARE @path VARCHAR(200); DECLARE @cmd NVARCHAR(4000); SELECT      @path = 'G:\XML\',     @cmd = N'dir ' + @path + '*.xml /b'; INSERT @tb(FileName) EXEC master.dbo.xp_cmdshell @cmd; DELETE @tb WHERE FileName IS NULL; DECLARE @id INT,@FileName NVARCHAR(1024); DECLARE @doc XML; SET @id = (SELECT TOP(1) id FROM @tb ORDER BY id); WHILE @id IS NOT NULL   BEGIN       SELECT @FileName = FileName FROM @tb WHERE id = @id;              SET @cmd = N'SELECT @x = (SELECT * FROM OPENROWSET(BULK '''                             + @Path + @FileName + ''',SINGLE_BLOB) AS T(x))';       EXEC sp_executesql @cmd,[email protected] xml output',@doc OUTPUT;              UPDATE @tb SET           doc = @doc        WHERE id = @id;              SET @id = (SELECT TOP(1) id FROM @tb WHERE id > @id ORDER BY id);   END    SELECT      B.x.value('(../name)[1]','VARCHAR(20)') AS name,     B.x.value('ip[1]','VARCHAR(15)') AS ip,     B.x.value('date[1]','DATETIME') AS date FROM @tb AS A     CROSS APPLY A.doc.nodes('/User/login') AS B(x);

上一篇:跪求sql server 数据整合 20fredrickhu]
下一篇:SSIS数据源中通过变量获取数据源进行转换的问题 100分,无满意结帖,结帖人tomsze]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款