创建日期命名的表名,并转移已完成的数据
2017-06-20 10:07
155 查看
/* Object: StoredProcedure [dbo].[CreateTable] Script Date: 2017/6/20 9:58:15 */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
– =============================================
– Author:
– Create date: <2017-6-20>
– Description: Nginx表自动创建并转移已完成的数据
– =============================================
ALTER PROCEDURE [dbo].[CreateTable]
– Add the parameters for the stored procedure here
AS
IF(SELECT COUNT(0) FROM NginxLog
–WHERE IsGrab=1 AND IsRead=’2’ AND IsRanking=’1’
)>0
BEGIN
–第一部分:以NginxLog_加“N天”之前的日期,自动创建带日期命名的表,如:NginxLog_20170614
–第二部分:当数据库的日期=N天前定义的日期,则将数据导入到“NginxLog_日期”的表中
–第三部分:删除NginxLog表中,这一天的数据
SELECT * FROM dbo.NginxLog WHERE CONVERT(char(10),AccessTime,120)=CONVERT(char(10),getdate()-@Day,120)
–DELETE FROM dbo.NginxLog WHERE CONVERT(char(10),AccessTime,120)=CONVERT(char(10),getdate()-@Day,120)
END
ELSE
PRINT ‘没有满足条件的表创建!’
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
– =============================================
– Author:
– Create date: <2017-6-20>
– Description: Nginx表自动创建并转移已完成的数据
– =============================================
ALTER PROCEDURE [dbo].[CreateTable]
– Add the parameters for the stored procedure here
--定义日期参数,即“N”天之前的日期 @Day int
AS
IF(SELECT COUNT(0) FROM NginxLog
–WHERE IsGrab=1 AND IsRead=’2’ AND IsRanking=’1’
)>0
BEGIN
–第一部分:以NginxLog_加“N天”之前的日期,自动创建带日期命名的表,如:NginxLog_20170614
--定义出“N天”之前的表拼接名 DECLARE @NDay VARCHAR(10) SELECT @NDay = CONVERT(CHAR(8),GETDATE()-@Day,112) Declare @TableDay VARCHAR(20) = 'NginxLog_'+@NDay SELECT @TableDay --创建日期命名的表,将要做的SQL操作全部存储到变量 DECLARE @sql_str1 NVARCHAR(MAX) SET @sql_str1 = N' CREATE TABLE [dbo].['+@TableDay+']( [Id] [nvarchar](36) NOT NULL, [Ip] [nvarchar](15) NOT NULL, [AccessTime] [datetime] NOT NULL, [RemoteType] [nvarchar](20) NOT NULL, [Uri] [nvarchar](4000) NOT NULL, [RemoteProtocol] [nvarchar](10) NOT NULL, [ResponseState] [int] NOT NULL, [BandWidth] [bigint] NOT NULL, [Os] [nvarchar](2000) NOT NULL, [HttpReferer] [nvarchar](255) NOT NULL, [HttpType] [nvarchar](5) NOT NULL, [ResponseTime] [float] NULL CONSTRAINT [DF_NginxLog_ResponseTime'+@NDay+'] DEFAULT ((0)), [AccessMachine] [nvarchar](15) NOT NULL CONSTRAINT [DF_NginxLog_AccessMachine'+@NDay+'] DEFAULT (NULL), [IpProvince] [nvarchar](50) NULL, [IpCity] [nvarchar](50) NULL, [IsRead] [tinyint] NOT NULL CONSTRAINT [DF__NginxLog__isRead__2B3F6F97'+@NDay+'] DEFAULT ((0)), [IsGrab] [tinyint] NOT NULL CONSTRAINT [DF_NginxLog_IsGrab'+@NDay+'] DEFAULT ((0)), [UpstreamTime] [float] NULL CONSTRAINT [DF_NginxLog_UpstreamTime'+@NDay+'] DEFAULT ((0)), [IsRanking] [tinyint] NOT NULL CONSTRAINT [DF__NginxLog__IsRank__5B78929E'+@NDay+'] DEFAULT ((0)), CONSTRAINT [PK__tmp_ms_x__3214EC0724D4C13B'+@NDay+'] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]' --执行变量 EXEC (@sql_str1)
–第二部分:当数据库的日期=N天前定义的日期,则将数据导入到“NginxLog_日期”的表中
--定义判断条件的日期 DECLARE @jDay CHAR(10)='0000-00-'+CAST(@Day AS CHAR(10)) SELECT @jDay DECLARE @sql_str2 NVARCHAR(MAX) SET @sql_str2 = N' INSERT INTO [dbo].['+@TableDay+']( [Id] ,[Ip] ,[AccessTime] ,[RemoteType] ,[Uri] ,[RemoteProtocol] ,[ResponseState] ,[BandWidth] ,[Os] ,[HttpReferer] ,[HttpType] ,[ResponseTime] ,[AccessMachine] ,[IpProvince] ,[IpCity] ,[IsRead] ,[IsGrab] ,[UpstreamTime] ,[IsRanking] ) SELECT [Id] ,[Ip] ,[AccessTime] ,[RemoteType] ,[Uri] ,[RemoteProtocol] ,[ResponseState] ,[BandWidth] ,[Os] ,[HttpReferer] ,[HttpType] ,[ResponseTime] ,[AccessMachine] ,[IpProvince] ,[IpCity] ,[IsRead] ,[IsGrab] ,[UpstreamTime] ,[IsRanking] FROM dbo.NginxLog WHERE CONVERT(char(10),AccessTime,120)=CONVERT(char(10),getdate()-'+@jDay+',120)' --执行SQL EXEC (@sql_str2)
–第三部分:删除NginxLog表中,这一天的数据
SELECT * FROM dbo.NginxLog WHERE CONVERT(char(10),AccessTime,120)=CONVERT(char(10),getdate()-@Day,120)
–DELETE FROM dbo.NginxLog WHERE CONVERT(char(10),AccessTime,120)=CONVERT(char(10),getdate()-@Day,120)
END
ELSE
PRINT ‘没有满足条件的表创建!’
相关文章推荐
- DOS创建以日期命名的文本文件
- linux下SVN仓库间数据转移或重命名
- ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
- oracle dblink 创建使用 垮库转移数据
- 创建一个以日期+时间命名的文本
- ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
- 创建文件夹,用系统日期命名。
- oracle俩张表按当前日期创建数据条数并排序关联
- 在手机的sd卡上创建一个以当天日期为命名的文件夹
- VC++如何以创建日期命名文本文档
- [转载]创建数据库与完成数据添删改查——第二种写法
- Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解
- 用批处理方式自动动创建以日期命名的文件夹
- ext.net 前台创建GridPanel,store ,后台设置Column,model,完成数据绑定。主要实现行选择事件
- 创建日期时间维度数据
- [转载]创建数据库与完成数据添删改查--第一种写法
- Linux创建以当前日期命名的文件夹
- 实例教程六:创建数据库与完成数据添删改查--第一种写法
- 数据泵导出 备份文件以日期时间命名
- C语言:创建动态单向链表,创建完成后,输出每一个节点的数据信息。