2012-03-04 54 views
0

我正在写一个c#.net应用程序,需要以下帮助。一个Excel电子表格到多个SQL表,Bulk或LINQ都会做

我有4个表:

用户(姓名,...,UsrID)

产品(名称,的ProdID)

评级(评级,RatID)

ProdRatings (UsrID,ProdID,RatID,DateRated,RatedBy)

现在我已经有一个excel表包含上面的视图:

工作表1:用户名,产品名称,评级,DateRated)

我需要填写此电子表格用户及其产品和评级,并将其全部插入到SQL数据库。现在

我可以导入到单个表没问题,但奋力导入到所有4一次。

任何帮助将不胜感激。

回答

0

假设你使用SQL Server:

insert into users (name) 
    SELECT distinct a.UserName 
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=C:\test\xltest.xls', [Sheet1$]) a 
    where not exists (select null from Users where Name = a.UserName) 

insert into Products (Name) 
    SELECT distinct a.ProductName 
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=C:\test\xltest.xls', [Sheet1$]) a 
    where not exists (select null from Products where Name = a.ProductName) 

insert into Ratings (Rating) 
    SELECT distinct a.Rating 
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=C:\test\xltest.xls', [Sheet1$]) a 
    where not exists (select null from Ratings where Name = a.Rating) 

insert into ProdRatings (UsrID, ProdID, RatID, DateRated) 
    SELECT Users.UsrID, Products.ProdID, Ratings.RatID, a.DateRated 
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=C:\test\xltest.xls', [Sheet1$]) a 
     inner join Users 
     on a.UserName = Users.Name 
     inner join Products 
     on a.ProductName = Products.Name 
     inner join Ratings 
     on a.Rating = Ratings.Rating 
     left join ProdRatings 
     on Users.UsrID = ProdRatings.UsrID 
     and Products.ProdID = ProdRatings.ProdID 
     and Ratings.RatID = ProdRatings.RatID 
    where ProdRatings.ID is null 

首先导入新用户,产品和等级,然后ProdRatings。

如果不使用SQL Server,首次导入Excel文件在你的标准的方式进入临时表,然后做局部插入。我希望这适合你的需求。

相关问题