An example you need to work on it, this not as per your logic...
It takes around less than 20 mins to insert records. Optimize the columns and SP, the insertion time will be less.
USE [MyDB]
GO
/****** Object: Table [dbo].[CardMaster] Script Date: 02/06/2011 21:34:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[CardMaster](
[id] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[SerialNo] [varchar](max) NULL,
[CardID] [varchar](max) NULL,
[SerialType] [varchar](2) NULL,
[SerialAmt] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE CardMasterUpdation
@inval varchar(2),
@inamt varchar(max)
AS
declare @SerialNo as varchar(max),
@CardNo as varchar(max),
@cnt numeric(18, 0),
@Flag numeric(18, 0)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN
SET @Flag = 1
WHILE (@Flag <= 30000)
BEGIN
SELECT @CardNo = SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 7)
IF NOT EXISTS(SELECT @CardNo FROM dbo.CardMaster WHERE CardID = @CardNo)
BEGIN
SELECT @cnt = COUNT(1) + 1 FROM dbo.CardMaster WHERE serialType = @inval;
SET @SerialNo = @inval + @inamt + '0' + cast(@cnt as varchar)
INSERT INTO dbo.CardMaster (SerialNo, CardID, SerialType, SerialAmt) VALUES (@SerialNo, @CardNo, @inval, @inamt)
SET @Flag = @Flag + 1
END
END
END
END
GO
exec CardMasterUpdation 'RH', '20'
Mark as Answer, on the posts replys that helped you !!!.
suthish nair
All-Star
15176 Points
3304 Posts
Re: Insert Large Amount Of Data in Sql Server 2005 Database With every time duplicate Check
Feb 06, 2011 03:05 PM|LINK
An example you need to work on it, this not as per your logic...
It takes around less than 20 mins to insert records. Optimize the columns and SP, the insertion time will be less.
My Blog