选择显示字体大小

sql server中合并用户日志表的方法

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

我的思路是创建一个用户存储过程来完成一系列自动化的操作,以下是代码。

--存储过程我命名为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)

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

 

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 )

            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’。

因为我没有找到可以实现这种操作的sql语句所以写了这样的存储过程,如果大家有好的更简单的办法请给我留言或来信:pujiang10@gmail.com。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons