|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
在维护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’。 返回类别: 教程 上一教程: 在LINUX下访问MS SQL SERVER数据库 下一教程: 一个MYSQL自动备份脚本 您可以阅读与"SQL SERVER中合并用户日志表的方式"相关的教程: · SQL Server 2000之日志传送功能(1) · SQL SERVER非正常删除日志文件(LDF)恢复方式 · 关于SQL Server中几个未宣布的访问注册表的扩展存储过 · SQL SERVER2000中用户自定义数据类型的使用 · 缩小SQL Server数据库日志 |
| 快精灵印艺坊 版权所有 |
首页 |
||