我可以从Sql数据库中的所有表中删除旧数据 [英] Ho Can I Delete Old Data From All Tables In Sql Database

查看:176
本文介绍了我可以从Sql数据库中的所有表中删除旧数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我有10,000个表,视图,一组对象和Primery密钥关系

如何从数据库中删除数据意味着我要从所有表中删除一个月的数据



示例我在数据库中有1月到12月的数据

i想要删除Jan& 2月份数据没有破坏表结构



请建议

Hi,

I have 10,000 Tables,Views,group of objects and Primery key relation
How can i delete data from database means i want to delete one month data from all tables

Example i have Jan to Dec Month data in database
i want to delete Jan & Feb Months data without breaking table structure

Please suggest

推荐答案

USE [MyDatabase]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[TblEmployee](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[EmpName] [varchar](20) NULL,
	[JoinDate] [datetime] NULL,
 CONSTRAINT [PK_TblEmployee] 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]

GO

SET ANSI_PADDING OFF
GO

INSERT INTO [dbo].[TblEmployee]([EmpName],[JoinDate])VALUES('Mahesh Patel','2015-01-01')
INSERT INTO [dbo].[TblEmployee]([EmpName],[JoinDate])VALUES('Rajesh Koriya','2014-01-01')
INSERT INTO [dbo].[TblEmployee]([EmpName],[JoinDate])VALUES('Dhaval Patel','2014-01-01')
INSERT INTO [dbo].[TblEmployee]([EmpName],[JoinDate])VALUES('Krutarth Shah','2014-01-01')









从表中删除动态

Delete from table Dynamically







USE [MyDatabase]
GO
DECLARE @Query NVARCHAR(MAX)
DECLARE MyCursor CURSOR LOCAL FOR
SELECT 'DELETE FROM ' + NAME +' WHERE JoinDate = ' +CHAR(39)+ '2014-01-01' + CHAR(39) as Query from Sys.Objects where type = 'U'
OPEN MyCursor
	FETCH NEXT FROM MyCursor INTO @Query
	WHILE  @@Fetch_Status=0            
	BEGIN
		PRINT(@Query)
		EXEC(@Query)
		FETCH NEXT FROM MyCursor INTO @Query
	END
CLOSE MyCursor
DEALLOCATE MyCursor


尝试运行:

Try to run this:
Select  'delete from '
     ||  object_name
     ||' where created_datetime <='
     ||' TRUNC(SYSDATE,'||''''||'YEAR'||''''||');' 
     delete_old_rows
from user_objects
where object_type = 'TABLE';



这对你有用。


May this helpful for you.


这篇关于我可以从Sql数据库中的所有表中删除旧数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆