1. 程式人生 > >建立日期命名的表名,並轉移已完成的資料

建立日期命名的表名,並轉移已完成的資料

/* 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

--定義日期引數,即“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()[email protected],112)
Declare @TableDay VARCHAR(20) = 'NginxLog_'
[email protected]
SELECT @TableDay --建立日期命名的表,將要做的SQL操作全部儲存到變數 DECLARE @sql_str1 NVARCHAR(MAX) SET @sql_str1 = N' CREATE TABLE [dbo].['[email protected]+']( [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'
[email protected]
+'] DEFAULT ((0)), [AccessMachine] [nvarchar](15) NOT NULL CONSTRAINT [DF_NginxLog_AccessMachine'[email protected]+'] DEFAULT (NULL), [IpProvince] [nvarchar](50) NULL, [IpCity] [nvarchar](50) NULL, [IsRead] [tinyint] NOT NULL CONSTRAINT [DF__NginxLog__isRead__2B3F6F97'[email protected]+'] DEFAULT ((0)), [IsGrab] [tinyint] NOT NULL CONSTRAINT [DF_NginxLog_IsGrab'[email protected]+'] DEFAULT ((0)), [UpstreamTime] [float] NULL CONSTRAINT [DF_NginxLog_UpstreamTime'[email protected]+'] DEFAULT ((0)), [IsRanking] [tinyint] NOT NULL CONSTRAINT [DF__NginxLog__IsRank__5B78929E'[email protected]+'] DEFAULT ((0)), CONSTRAINT [PK__tmp_ms_x__3214EC0724D4C13B'[email protected]+'] 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].['[email protected]+'](
   [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()-'[email protected]+',120)'

  --執行SQL
  EXEC (@sql_str2)  

–第三部分:刪除NginxLog表中,這一天的資料
SELECT * FROM dbo.NginxLog WHERE CONVERT(char(10),AccessTime,120)=CONVERT(char(10),getdate()[email protected],120)
–DELETE FROM dbo.NginxLog WHERE CONVERT(char(10),AccessTime,120)=CONVERT(char(10),getdate()[email protected],120)
END

ELSE
PRINT ‘沒有滿足條件的表建立!’

相關推薦

建立日期命名轉移完成資料

/* Object: StoredProcedure [dbo].[CreateTable] Script Date: 2017/6/20 9:58:15 */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER

JQuery 動態建立自動提交

前言:寫這個是為了實現使用cookie進行自動登入的功能, 下面的程式碼是一個元素一個元素進行建立和賦值的, (可以嘗試下將所有的html程式碼(form、input)全部拼好以後放到${ } 中,再進行提交。) submit的時候注意下寫法,就這樣 //獲取cookie中的

日誌原始碼刪除指定路徑所有資料建立新的日誌檔案

#include "stdafx.h" #pragma warning( disable : 4786) // Disable warning messages #include <stdi

bootstrap改變上傳文件按鈕樣式顯示上傳文件

-a BE ner city 定義 lock left contain ont 參考博文:  html中,文件上傳時使用的<input type="file">的樣式自定義html中<input type="file">默認樣式很醜,這裏用了Boot

PHP編寫一個函數可以接收一個然後打印的表頭和記錄在網頁

php mysql <?php function show_table_info($table_name){ $conn = mysql_connect("localhost" , "root" , "root"); if(!$conn){

MySQL、SQL server 、Oracle資料庫中查詢所有的資料庫查詢指定資料庫所有查詢所有的欄位的名字

MySQL中查詢所有資料庫名和表名 1.查詢所有資料庫 show databases; 2.查詢指定資料庫中所有表名 select table_name from information_schema.tables where table_schema='database_name' a

Spark2.2+ES6.4.2(三十二):ES API之ndex的create(建立index時設定setting建立index後根據avro模板動態設定index的mapping)/update/delete/open/close

要想通過ES API對es的操作,必須獲取到TransportClient物件,讓後根據TransportClient獲取到IndicesAdminClient物件後,方可以根據IndicesAdminClient物件提供的方法對ES的index進行操作:create index,update inde

oracle建立使用者及空間收回許可權授予角色等sql整合

--建立使用者 --create user userName identified by password; --建立表空間 --create tablespace tableSpaceName datafile '/home/oracle/app/oracle/oradata/orc

MyBatis動態傳入欄位引數的解決辦法--用於分--是動態的

MyBatis動態傳入表名,欄位名引數的解決辦法--用於分表--表名是動態的 一直在使用Mybatis這個ORM框架,都是使用mybatis裡的一些常用功能。今天在專案開發中有個業務是需要限制各個使用者對某些表裡的欄位查詢以及某些欄位是否顯示,如某張表的某些欄位不讓使用者查詢到。這種情況下,就需

layui使用button按鈕 點擊出現子彈層 彈層中載入傳遞引數給父彈出層

在父層中增加button按鈕和隱藏域接收子彈出層傳遞的值 <button id="btnMenuTree" type="button" class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">選擇</bu

Pandas建立一個空DataFrame逐行插入資料

#建立一個空的Dataframe result =pd.DataFrame(columns=('idx','degree','weight','diameter')) #將計算結果逐行插入result,注意變數要用[]括起來,同時ignore_index=True,否則會報錯,ValueEr

sql 盲注之利用regexp得到庫列名

我們都已經知道,在MYSQL 5+中 information_schema庫中儲存了所有的 庫名,表明以及欄位名資訊。故攻擊方式如下: 1. 判斷第一個表名的第一個字元是否是a-z中的字元,其中blind_sqli是假設已知的庫名。 注:正則表示式中 ^[a-z] 表示字

VMware建立多個虛擬機器分配IP地址用xshell來連線

1.設定虛擬機器的網路連線模式為NAT模式 2.取消DHCP服務。 3.檢視虛擬機器網段,閘道器地址 4.設定靜態IP vi /etc/sysconfig/network-scripts/ifcfg-ens32 ,ens32這裡根據每個人的不同而不同 TYP

MyBatis動態傳入欄位引數

問題 Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your

一個JNI建立日期物件的例子僅作參考

JNIEXPORT void JNICALL Java_com_cjz_mapscr_MapScreen_drawLines (JNIEnv *env, jobject thiz) { jclass clazz_date = (*env)->FindClass(env, "java/util

mysql修改列名列型別新增刪除

alter table test rename test1; --修改表名 alter table test add column name varchar(10); --新增表列 alter table test drop column name; --刪除表列

Sql資料庫儲存過程傳值(傳遞資料列名)sp_executesql函式的使用

遇到的專案需求是:對幾個不同的資料表和相應的欄位進行類似的操作,表的名稱和相關的列名可以作為儲存過程的引數傳遞,這樣可以使用遊標遍歷不同表格的不同的列,再使用相同函式求出返回值進行統一的處理。由於專案中表的資料龐大,關係複雜,此處做簡化處理,描述大致意思。(此處的資料庫是SQ

powerDesigner 從資料庫匯出結構生產excel 有效

將資料庫中的表匯入到PowerDesigner中並轉為excel文件 1、開啟PowerDesigner12,在選單中按照如下方式進行操作    file->Reverse Engineer->DataBase    點選後,彈出 New Physical D

Sql Server 中將由逗號“”分割的一個字串轉換為一個應用到 in 條件中

Sql Server 中將由逗號“,”分割的一個字串,轉換為一個表,並應用與 in 條件 select * from tablenmae where id in(1,2,3) 這樣的語句和常用,但是如果in 後面的 1,2,3是變數怎麼辦呢,一般會用字串連

【Cloud】AWS建立Ubuntu EC2虛擬機器Apache釋出網頁步驟

寫在前面過程基實很簡單,但是會用到一些常用的輔助工具,比如putty、SFTP工具等,平時常用就不是問題,找文件沒有找到非常詳盡的,最終在國外網站上找到文字步驟,這裡再把截圖過程記錄一下.一、在aws 管理控制檯console上設定安全組單擊入站選項卡,新增2組:source