国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 00:50:47
字體:
來源:轉載
供稿:網友

在維護SQL Server數據庫的過程中,大家是不是經常會遇到成千上萬的類似log20050901 這種日志表,每一個表中數據都不是很多,一個一個打開看非常不方便,或者有時候我們需要把這些表中的資料匯總,一個一個打開操作也是很麻煩。下面就介紹了一種自動化的合并表的方法。

我的思路是創(chuàng)建一個用戶存儲過程來完成一系列自動化的操作,以下是代碼。

--存儲過程我命名為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’。

因為我沒有找到可以實現(xiàn)這種操作的SQL語句所以寫了這樣的存儲過程,如果大家有好的更簡單的辦法請給我留言或來信:pujiang10@Gmail.com。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆云县| 岳阳市| 铁岭县| 赞皇县| 邵阳县| 长丰县| 淮北市| 尖扎县| 增城市| 和林格尔县| 永州市| 秦皇岛市| 堆龙德庆县| 东乌珠穆沁旗| 永平县| 庆阳市| 陕西省| 大关县| 九龙城区| 娱乐| 旺苍县| 平安县| 武陟县| 德兴市| 彰化县| 尤溪县| 盐津县| 麻阳| 德兴市| 天峨县| 宜兰县| 鹤庆县| 徐水县| 浮梁县| 于都县| 靖宇县| 乐东| 长沙市| 宜川县| 华池县| 屯门区|