微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer数据迁移自增列IDENTITY

前言:线上一数据表数据量很大,导致扫描缓慢,新增一数据表转移,转移表中有自增列....


USE [master]

GO


--新增一数据库历史区域

CREATE DATABASE [Sfis_History] ON  PRIMARY

( NAME = N'Sfis_History',FILENAME = N'D:\Program Files\Microsoft sql Server\MSsql10_50.MSsqlSERVER\MSsql\DATA\Sfis_History.mdf',SIZE = 3072KB,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB )

LOG ON

( NAME = N'sfis_History_log',FILENAME = N'D:\Program Files\Microsoft sql Server\MSsql10_50.MSsqlSERVER\MSsql\DATA\sfis_History_1.ldf',SIZE = 1024KB,FILEGROWTH = 10% )

-- 1) 直接插入的方法

SELECT * INTO Sfis_History.dbo.T_matstate FROM Sfis.dbo.T_matstate WHERE scandate < '2013-01-01'

SELECT * INTO Sfis_History.dbo.T_matstatereplace FROM Sfis.dbo.T_matstatereplace WHERE scandate < '2013-01-01'


-- 2)先新增表结果,再转移数据

SELECT * INTO Sfis_History.dbo.T_matstate FROM Sfis.dbo.T_matstate WHERE 1 <> 1

SELECT * INTO Sfis_History.dbo.T_matstatereplace FROM Sfis.dbo.T_matstate WHERE 1 <> 1


--打开手动指定id选项,转移数据时指定具体列,完成后关闭选项

SET IDENTITY_INSERT Sfis_History.dbo.T_matstate ON

SET IDENTITY_INSERT Sfis_History.dbo.T_matstatereplace ON


INSERT INTO dbo.T_matstate (

id

,line

noperator

Feederno

Feeder)

SELECT  

Feeder

FROM Sfis.dbo.T_matstate WHERE scandate < '2011-01-01'


SET IDENTITY_INSERT Sfis_History.dbo.T_matstate OFF

SET IDENTITY_INSERT Sfis_History.dbo.T_matstatereplace OFF


--删除线上数据

DELETE FROM Sfis.dbo.T_matstate WHERE scandate < '2013-01-01'

DELETE FROM Sfis.dbo.T_matstatereplace WHERE scandate < '2013-01-01'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐