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

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

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

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

在維護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>[email protected]) and (@tablename<[email protected])

         --開始導入

 

         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語句所以寫了這樣的存儲過程,如果大家有好的更簡單的辦法請給我留言或來信:[email protected]

,歡迎訪問網頁設計愛好者web開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桐城市| 麻栗坡县| 宝清县| 昂仁县| 长治县| 昌图县| 宽城| 盖州市| 土默特右旗| 秭归县| 丹寨县| 大荔县| 拜泉县| 唐山市| 虞城县| 章丘市| 枞阳县| 浏阳市| 天柱县| 惠州市| 三门县| 新乐市| 阆中市| 丹东市| 靖西县| 西藏| 鄂尔多斯市| 乐业县| 诏安县| 双峰县| 蚌埠市| 衡水市| 藁城市| 中西区| 新民市| 武鸣县| 昌吉市| 新巴尔虎右旗| 康平县| 抚宁县| 洮南市|