2012-03-04 57 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文件在你的標準的方式進入臨時表,然後做局部插入。我希望這適合你的需求。

相關問題