学习网考试学习资料

Gzu521.com

SQL Server中合并用户日志表的方法

SQL Server教程   点击:次   发布时间:2005-9-13   【字体: 】   来源:Gzu521.com
GZU521.COM学习网

在维护SQL Server数据库的过程中,大家是不是经常会遇到成千上万的类似log20050901 这种日志表,每一个表中数据都不是很多,一个一个打开看非常不方便,或者有时候我们需要把这些表中的资料汇总,一个一个打开操作也是很麻烦。下面就介绍了一种自动化的合并表的方法。

我的思路是创建一个用户存储过程来完成一系列自动化的操作,以下是代码。 vr~?c*g/.#\=_@x [ 本 资 料 来 源 于 贵 州 学 习 网 网络编程SQL Server教程 http://Www.gzU521.com ] vr~?c*g/.#\=_@x

--存储过程我命名为backupdata,可以使用自己定义的名称。

--参数1:@tabletarget 生成的目标表的名称

--参数2:@tablestart 合并开始的表名

--参数3:@tableend 合并结束的表名

create procedure backupdata @tabletarget sysname,@tablestart sysname,@tableend sysname

as

declare tnames_cursor cursor

for

   select table_name

   from information_schema.tables

open tnames_cursor

declare @tablename sysname

declare @tablepref sysname

declare @istargetexist integer

--判断目标表是否存在

 

set @istargetexist=(select count(table_name) from information_schema.tables where table_name = @tabletarget)

--如果目标表不存在则新建表

 oor7s89+abQ,:k,"y[ 此文转贴于我的学习网网络编程SQL Server教程 http://www.Gzu521.com]oor7s89+abQ,:k,"y

if @istargetexist=0

begin

  --exec中的语句可以用sql server编写的表脚本替换。注意在目标表中不能够存在与需合并表中名称一样的“自动编号”类型的字段。

 

  exec ('create table [dbo].[' + @tabletarget + ']

       (

       [log1] [nvarchar] (10) collate chinese_prc_ci_as null ,

       [log2] [nvarchar] (10) collate chinese_prc_ci_as null ,

       ……

        )')

end


 


fetch next from tnames_cursor into @tablename

while (@@fetch_status <> -1)

begin

   if (@@fetch_status <> -2)

   begin  

      select @tablename = rtrim(@tablename)

      --以下两行根据日志表的名称更改

 

      --取日志表名的前3位作为标识

 

      select @tablepref = left(@tablename,3)

      --判断表名是否附合要求

 

      if (@tablepref='log') and (@tablename>=@tablestart) and (@tablename<=@tableend)

         --开始导入

 

         begin

            exec ('insert into ' + @tabletarget + ' select * from ' + @tablename )z5s&S9Z2Pz ipmZ {[本_文_来_源_于_我_的_学_习_网网络编程SQL Server教程 http://Www.GZU521.Com ]z5s&S9Z2Pz ipmZ {

            print '表' + @tablename + '已导入' + @tabletarget + '中'

         end

   end

   fetch next from tnames_cursor into @tablename

end

--释放内存

close tnames_cursor

deallocate tnames_cursor

把上面代码在sql查询分析器中运行即生成存储过程backupdata。

backupdata的使用方法如下:

exec backupdata ‘合并后表名’,’开始表名’,’结束表名’,例如:

exec backupdata ‘_logs200508’,’log200508000000’,’log200508319999’。

责任编辑:gzu521

网络编程分类
ASP教程
.Net教程
Java教程
PHP教程
数据库基础
ACCESS教程
SQL Server教程
MySQL教程
Oracle教程
分类推荐信息
更多...
大类最新文章
更多...