`

将表中的数据保留一周的数据其余全部转移

阅读更多

将表中的数据保留一周的数据其余全部转移

 

用于数据库迁移。

 

 

code:

USE Kyt
GO
/*  Daily_StockSettlement  保留最近一周数据,其他全部迁移至历史数据库表(KYT_History.dbo.Daily_StockSettlement_his)  */

-- 此过程适合sqlserv 2005 或2005以上的版本
--  SELECT TOP 100 DSS_CreateDate FROM Daily_StockSettlement ORDER BY DSS_CreateDate  ASC
--  SELECT TOP 100 DSS_CreateDate FROM KYT_History.dbo.Daily_StockSettlement_his ORDER BY DSS_CreateDate  ASC
--  SELECT count(1) FROM Daily_StockSettlement

DECLARE @mindate DATETIME,@maxdate DATETIME,@maxday INT,@maxpage INT,@minday INT
SET @maxday = 1	--每次操作【*】天的数据 如1天,当每天的数量太大时,建议减小此值(现在数据中一天约20000条数据)
SET @minday = 9   --保留最近 【*】 天的数据 如 9天
--获取当前表数据的最前一条(order by 创建时间)
SELECT TOP 1 @mindate = DSS_CreateDate FROM Daily_StockSettlement ORDER BY DSS_CreateDate  ASC
--获取当前表数据的最后一条(order by 创建时间)
SELECT TOP 1 @maxdate = DSS_CreateDate FROM Daily_StockSettlement ORDER BY DSS_CreateDate  DESC
--设置循环的次数
SET @maxpage = ((DATEDIFF(DAY,@mindate,@maxdate))-@minday)/@maxday
PRINT '共需要执行 '+ convert(varchar(10), @maxpage)+' 次循环。'
--  开始循环数据
WHILE (@maxpage >= 0)
BEGIN
	PRINT 'NO:  '+convert(varchar(10), @maxpage)+' 次循环 开始执行。。。'
	---- 使用事物 将数据移动到历史表
	BEGIN TRANSACTION
	BEGIN TRY
		IF(@maxpage > 0)
		BEGIN
			--最后两天的计算方式
			SET @mindate = DATEADD(DAY,(@maxday),@mindate)
		END
		ELSE
		BEGIN
			--最后一天的计算方式,最后一天
			SET @mindate = DATEADD(DAY,(DATEDIFF(DAY,@mindate,@maxdate))-(@minday-1),@mindate)
		END 
		PRINT '开始将旧表的数据插入到新表中:'
		INSERT INTO KYT_History.dbo.Daily_StockSettlement_his SELECT * FROM Daily_StockSettlement WHERE DSS_CreateDate < @mindate ORDER BY DSS_CreateDate  ASC
		PRINT '开始删除旧表中的数据:'
		DELETE FROM Daily_StockSettlement WHERE DSS_CreateDate < @mindate
		PRINT '正在执行 '+ convert(varchar(10), @maxpage)+' 次循环,没有发生错误,正在执行 Commit 命令。'
		--提交事物
		COMMIT TRANSACTION
		--最后将maxpage-1
		SET @maxpage = @maxpage-1
		--等待20秒后继续运行此循环
		WAITFOR DELAY '00:00:10';
	END TRY
	BEGIN CATCH
		PRINT '正在执行 '+ convert(varchar(10), @maxpage)+' 次循环,并且发生错误:执行 Rollback 命令。'
		PRINT '错误内容:'+ERROR_MESSAGE()
		--如果发生异常 抛出错误并回滚
		ROLLBACK TRANSACTION
		--如果发生异常马上结束循环
		BREAK
	END CATCH
END --while end
GO


/*
select ERROR_LINE() as Line,
ERROR_MESSAGE() as message1,
ERROR_NUMBER() as number,
ERROR_PROCEDURE() as proc1,
ERROR_SEVERITY() as severity,
ERROR_STATE() as state1 
)*/	



 

 

1
1
分享到:
评论

相关推荐

    Oracle删除表中的重复数据

    在Oracle中删除表中的重复数据,可以采用多种策略,但通常涉及创建一个临时表来保存去重后的数据,然后用这个临时表覆盖原始表。这种方法可以避免直接修改原表带来的风险,确保操作的安全性。以下是一种具体的实现...

    shell脚本实现mysql从原表到历史表数据迁移

    数据迁移是其常见的运维操作之一,例如将当前活动数据移出主表,存入历史表,以便保持主表的高效运行。 `CentOS`是一个稳定的Linux发行版,常被用作服务器操作系统。它提供了对MySQL等服务的良好支持,是执行这类...

    数据透视表和数据透视图PPT学习教案.pptx

    3. 勾选将数据显示在整列中的字段,并将其拖到“列标签”区域内。 4. 拖放行、列字段后的数据透视表。 5. 从“数据透视表字段列表”任务窗格中,勾选字段“数量”复选项,并将其拖到“∑数值”区域内。 在 Excel ...

    关于在compose数据窗口中进行数据转移

    2. **数据导入与导出**:如果需要在不同环境之间转移数据,可以使用`docker cp`命令将数据卷的内容复制到本地文件系统,然后在另一环境中再复制回去。例如,将数据导出: ``` docker cp db_container:/var/lib/...

    45-MySQL单表2000万数据查询慢解决方案1

    在解决方案中,我们使用的是按照8周将单表分为8个区,每周一都会将最早一周的分区Drop掉,然后新建下一周的分区。这样可以大大减少数据的查询时间。 时间触发器 我们使用MySQL的时间触发器来实现定时任务。首先,...

    AMESim表格数据导入方法--经常用到.rar_Amesim存数据_Amesim怎么查表_amesim中的数表_amesim表

    在实际应用中,有时我们需要将数据从外部文件如Excel导入到AMESim中,以便进行复杂的计算或者设定参数。本教程将详细介绍如何高效地进行AMESim表格数据的导入。 首先,我们来理解“AMESim存数据”。在AMESim中,...

    将两个表的数据通过笛卡尔积输出到新表中

    将两个表的数据通过笛卡尔积输出到新表中,通过Kettle 转换的形式跑的

    全球主要国家数据表mysql

    标题 "全球主要国家数据表mysql" 指的是一个专门设计用于MySQL数据库的表格,包含了全球各个国家的主要信息。这个数据表可能包含了各国的基本统计数据,如国家名称、首都、人口、面积、货币、国际电话区号等。这些...

    DataGridView中直接保存修改的数据

    标题“DataGridView中直接保存修改的数据”指的是如何在用户对`DataGridView`中的数据进行编辑后,将这些更改直接保存到后台数据库。描述中提到的“在单元格中直接修改,附带数据库2005版”,意味着我们将讨论在用户...

    使用toad导出oracle数据库某个或多个表中的数据

    1. **导出单个数据表中的数据** - 首先,你需要启动Toad for Oracle并进入Schema窗口,这里列出了所有数据库对象。 - 在Data部分,你可以编写SQL查询以筛选特定的表数据,确保where条件正确无误,这有助于在导出前...

    SAP常用后台数据表大全(FI-CO-MM-SD-PP等).pdf

    在此,我们将详细探讨SAP后台数据表中的财务(FI)、成本控制(CO)、物料管理(MM)、销售与分销(SD)和生产计划(PP)等模块中的常用数据表。 1. FI模块数据表 - BKPF(会计凭证抬头):存储会计凭证的基本信息...

    省市区管理sql数据表设计、以及全国省市区全部最新数据

    省市区管理sql数据表设计、以及全国省市区全部最新数据,省市区管理sql数据表设计、以及全国省市区全部最新数据,省市区管理sql数据表设计、以及全国省市区全部最新数据,

    变电站数据集真实场景下的仪表图像

    "变电站数据集真实场景下的仪表图像"是一个专门针对变电站仪表的图像数据集,它包含3000张真实环境中的仪表照片,适用于进行目标检测任务。这个数据集对于那些致力于研发自动化监测、故障诊断或智能维护系统的工程师...

    Excel数据透视表全攻略 课后习题.zip

    在Excel中,数据透视表是一种强大的数据分析工具,它可以帮助用户快速汇总、分析、探索和呈现大量数据集的信息。本资源“Excel数据透视表全攻略 课后习题.zip”提供了全面学习和掌握这一功能的材料,包括讲义、课后...

    vb中将数据保存到excel

    本文将详细介绍如何使用Visual Basic (VB)来实现从MSFlexGrid控件中提取数据,并将其保存到一个新的Excel文件中的过程。 #### 实现原理及步骤解析 ##### 1. 创建Excel应用对象 ```vb Dim xlApp As Excel....

    JasperReport中使用多个数据源的方法

    - **应用场景**:例如,一个报表中需要同时展示来自不同数据库的数据,或者需要将一部分数据以表格形式展示,另一部分数据则以图表形式展示。 ### 2. 实现步骤详解 #### 步骤一:使用iReport设计报表 1. **新建...

    PB将数据窗口的内容保存成PDF格式的文档

    在某些场景下,我们可能需要将数据窗口中的内容导出为PDF格式,以便于打印、分享或长期存储。下面将详细介绍如何在PB中实现这一功能。 1. **PDF导出原理** PDF(Portable Document Format)是一种标准的文档格式,...

    数据流图与数据字典的一个例子

    在本例子中,我们考虑了一个计算机化的帐务处理系统,系统的数据流图是计算机部分的数据流图,人工完成的部分将不做反应。系统的顶层数据流图如图1所示,系统的第一层分解图如图2所示。 在系统中,登帐处理由计算机...

    嵌入式系统软件设计中的数据结构-(完整版).rar

    《嵌入式系统软件设计中的数据结构》是周慈航教授编写的一本针对嵌入式领域初学者的基础教材。在嵌入式系统开发中,数据结构扮演着至关重要的角色,因为有效的数据组织方式直接影响到程序的性能、内存使用以及算法...

Global site tag (gtag.js) - Google Analytics