Одна электронная таблица Excel для нескольких таблиц SQL, как Bulk, так и LINQ. - PullRequest
0 голосов
/ 04 марта 2012

Я пишу приложение на c # .net, и мне нужна помощь со следующим.

У меня есть 4 стола:

Пользователи (Имя, ..., UsrID)

Продукты (Имя, ProdID)

Рейтинги (Rating, RatID)

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

Теперь у меня есть связующее представление листа Excel, созданное из таблиц выше:

Лист1: Имя пользователя, Имя продукта, Рейтинг, Дата-рейтинг)

Мне нужно заполнить эту таблицу пользователями, их продуктами и рейтингом и вставить все это в базу данных sql.

Теперь я могу импортировать в одну таблицу без проблем, но изо всех сил пытаюсь импортировать все 4 сразу.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 марта 2012

Предполагается, что вы используете 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 стандартным способом во временную таблицу, а затем выполните частичные вставки. Я надеюсь, что это соответствует вашим потребностям.

...