Click here to Skip to main content
15,891,687 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi Friends,

I have two tables:
1. ProductDetail:
PrKID INT,
IMEI1 VARCHAR(20),
IMEI2 VARCHAR(20),
IMEI3 VARCHAR(20),
IMEI4 VARCHAR(20)

and
2. IMEIUpload:
IMPkID,
IMEI1 VARCHAR(20),
IMEI2 VARCHAR(20),
IMEI3 VARCHAR(20),
IMEI4 VARCHAR(20)


I Uploads IMEIs with Excel( Column Names as [IMEI1, IMEI2, IMEI3, IMEI4])

I check IMEIs in both tables to already existing so performance of upload is very slow
how can i increase this???


Please Help Me??

Shreeniwas Kushwah
Posted
Updated 28-May-13 20:08pm
v3
Comments
Maciej Los 29-May-13 2:12am    
How do you check IMEI's? I don't see any code.
shreeniwas kushwah 29-May-13 2:19am    
SqlCommand command = CreateCommand();
command.Connection.Open();
command.CommandText = "BulkIMEFromExcel1";

command.Parameters.Add(new SqlParameter("@IMEI", SqlDbType.VarChar)).Value = imei;
command.Parameters.Add(new SqlParameter("@IMEI2", SqlDbType.VarChar)).Value = imei2;
command.Parameters.Add(new SqlParameter("@IMEI3", SqlDbType.VarChar)).Value = imei3;
command.Parameters.Add(new SqlParameter("@IMEI4", SqlDbType.VarChar)).Value = imei4;
shreeniwas kushwah 29-May-13 2:21am    
IF EXISTS(SELECT 1 FROM ModelIMEI MI
WHERE
(@IMEI<>'' AND @IMEI IS NOT NULL AND( MI.IMEI=@IMEI OR MI.SecondaryIMEI=@IMEI OR MI.IMEI3=@IMEI OR MI.IMEI4=@IMEI))
OR
(@IMEI2 <>'' AND @IMEI2 IS NOT NULL AND( MI.IMEI=@IMEI2 OR MI.SecondaryIMEI=@IMEI2 OR MI.IMEI3=@IMEI2 OR MI.IMEI4=@IMEI2))
OR
(@IMEI3 <>'' AND @IMEI3 IS NOT NULL AND (MI.IMEI=@IMEI3 OR MI.SecondaryIMEI=@IMEI3 OR MI.IMEI3=@IMEI3 OR MI.IMEI4=@IMEI3))
OR
(@IMEI4 <>'' AND @IMEI4 IS NOT NULL AND (MI.IMEI=@IMEI4 OR MI.SecondaryIMEI=@IMEI4 OR MI.IMEI3=@IMEI4 OR MI.IMEI4=@IMEI4))
)
BEGIN
SELECT 'IMEI Already Exists'
RETURN
END

IF EXISTS (SELECT 1 FROM ProductDetail PD
WHERE
(@IMEI<>'' AND @IMEI IS NOT NULL AND (PD.IMEINumber=@IMEI OR PD.IMEI2=@IMEI OR PD.IMEI3=@IMEI OR PD.IMEI4=@IMEI))
OR
(@IMEI2 <>'' AND @IMEI2 IS NOT NULL AND(PD.IMEINumber=@IMEI2 OR PD.IMEI2=@IMEI2 OR PD.IMEI3=@IMEI2 OR PD.IMEI4=@IMEI2))
OR
(@IMEI3 <>'' AND @IMEI3 IS NOT NULL AND(PD.IMEINumber=@IMEI3 OR PD.IMEI2=@IMEI3 OR PD.IMEI3=@IMEI3 OR PD.IMEI4=@IMEI3))
OR
(@IMEI4 <>'' AND @IMEI4 IS NOT NULL AND (PD.IMEINumber=@IMEI4 OR PD.IMEI2=@IMEI4 OR PD.IMEI3=@IMEI4 OR PD.IMEI4=@IMEI4))
)
BEGIN
SELECT 'IMEI Already Exists'
RETURN
END

1 solution

Please, read my comment first.

Have a look at example query:
SQL
--declare variable; temporary table 
DECLARE @tmpIms TABLE (IMEI1 VARCHAR(20),
    IMEI2 VARCHAR(20),
    IMEI3 VARCHAR(20),
    IMEI4 VARCHAR(20))

--insert values from Excel into temporary table
INSERT INTO @tmpIms (IMEI1, IMEI2, IMEI3, IMEI4)
SELECT IMEI1, IMEI2, IMEI3, IMEI4  
FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\ExcelFileName.xls', 'SELECT * FROM [Sheet1$]') AS DT

--view only new IMEI's 
SELECT *
FROM @tmpIms
WHERE IMEI1 NOT IN (
    SELECT IMEI1 
    FROM ProductDetails AS PD INNER JOIN @tmpIms AS TI ON PD.IMEI1 = TI.IMEI1 AND PD.IMEI2 = TI.IMEI2 AND PD.IMEI3 = TI.IMEI3 AND PD.IMEI4 = TI.IMEI4
    )

and change the code to your needs ;)
 
Share this answer
 
Comments
shreeniwas kushwah 29-May-13 3:05am    
How Can I call this Script from Front End???
(due to Excel OpenRowSet)

because i use DataTable to In-Memory Data for Excel
Maciej Los 29-May-13 3:10am    
Create stored procedure[^] and call it[^] from front-end.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900