`

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

阅读更多

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

 

用于数据库迁移。

 

 

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
分享到:
评论

相关推荐

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

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

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

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

    Excel数据透视表素材+课件+作业

    1. 数据透视图:除了表格形式外,还可以将数据透视表转换为图表,如柱状图、饼图、线图等,以便更直观地展示数据趋势和分布。 2. 分组与分层:对行或列字段进行分组,可以创建层次结构,便于比较不同级别的数据。 3....

    变电站指针式仪表数据集

    在电力系统中,变电站是电力传输网络的关键节点,负责电压等级转换、功率分配和电能质量监控。指针式仪表是变电站中常见的监测设备,用于实时显示电流、电压、频率、功率等电气参数。本数据集"变电站指针式仪表数据...

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

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

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

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

    kettle全量多表数据同步

    - **表输出**: 使用“表输出”步骤将数据写入MySQL中的对应表。 3. **转换设置**: - 在“表输出”步骤中,通过设置表名为变量`${tablename}`来动态确定要写入的目标表。 #### 四. 建立作业 **4.1 创建‘ORACLE ...

    DataGridView中直接保存修改的数据

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

    STC89C52单片机掉电数据保存程序

    这些存储器即使在电源关闭后也能保留数据,使得单片机在下次上电时可以读取之前保存的信息。 在STC89C52中,虽然主要的程序存储器是Flash,但也可以利用内部的EEPROM或者模拟EEPROM的方式来实现数据的持久化存储。...

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

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

    VB 利用UPDATE语句批量更新数据表中的数据

    在本教程中,我们将专注于“利用UPDATE语句批量更新数据表中的数据”这一主题。UPDATE语句是SQL语言的一个重要部分,用于修改已存在于数据库表中的记录。在VB中,我们可以结合ADO(ActiveX Data Objects)库来执行...

    labview 保持上次数据

    在关闭时,可以将数据写入属性,打开时读取。这种方式对小型数据集很有效,但对于大量数据可能不太合适。 5. **全局变量与簇**: 如果多个VI需要共享相同的数据,可以使用全局变量或簇。全局变量在整个工程中可见...

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

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

    python实时读取串口数据并自动保存至excel

    在本项目中,我们使用Python来实现实时读取串口数据,并利用多线程技术将这些数据自动保存到Excel文件中。此外,该项目还提供了可扩展性,可以集成PyQT5图形用户界面(GUI)来增强用户体验。 首先,让我们深入了解...

    金蝶EAS8.5数据字典(全部表结构说明)

    金蝶EAS8.5数据字典,全部表结构说明,包含超级详细的表、字段说明,以及关联字段说明。

    VB读取并保存串口数据,显示数据曲线

    在VB(Visual Basic)编程环境中,串口通信是一种常见的硬件交互方式,用于设备间的双向数据传输。本项目涉及的关键知识点包括VB串口编程、数据读取、数据保存以及数据显示为曲线,这些都是构建串口通信应用的基础。...

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

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

    全世界主要国家和城市数据表

    标题 "全世界主要国家和城市数据表" 暗示了我们正在处理一个包含全球范围内的国家和城市相关信息的数据库。这种类型的数据通常包括各种统计和地理信息,是研究、数据分析或应用开发的重要资源。数据表可能包含以下...

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

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

    单片机第一次实验,将ROM中的数据传送到RAM

    单片机第一次实验,将ROM中的数据传送到RAM. 单片机第一次实验,将ROM中的数据传送到RAM

Global site tag (gtag.js) - Google Analytics