2013-05-06 1 views
1

У меня есть таблица сотрудников компании.Обнаружение и обновление небольшого количества изменений в таблице

Ежедневно, я получаю таблицу из последнего списка сотрудников компании. Если какое-либо лицо (на основе SSN) в таблице не находится в электронной таблице, этот сотрудник ушел и столбец EndDate обновлен. Если человек находится в электронной таблице, но не в таблице, он является новым сотрудником и должен быть вставлен. В противном случае это уже существующий сотрудник, а нуль или более столбцов (например, номер телефона, супервизор и т. Д.) Могли бы быть изменены и что строка в таблице должна быть обдумана.

Учитывая, что размер компании составляет менее 1000 человек, и что каждый день изменения составляют около 50 сотрудников, каков рекомендуемый способ обновления данных?

Я понимаю, что нет лучшего решения, но хотелось бы посмотреть, какие творческие реализации там есть. Благодарю.

ответ

1

SQL Server предоставляет специальную merge команду для ситуаций как это.

Вы можете использовать этот простой подход:

  • Написать содержание всей таблицы во временную таблицу
  • Выполнить слияние таблицы сотрудников и временную таблицу, используя спичку SSN в качестве слияния условия поиска
  • Использование WHEN NOT MATCHED BY SOURCE для изменения EndDate
  • Использование WHEN NOT MATCHED BY TARGET для добавления новых сотрудникам
  • нас e WHEN MATCHED для всех остальных обновлений.
1

Вы можете создать SSIS пакет для этого и автоматизировать его, когда все вы получите новый дизайн spreadsheet.The может быть столь же просто, как один ниже

enter image description here

0

По вашему требованию вы охарактеризовали я придумал одну идею/решение, которое я буду использовать ..

Шаг 1: Создание Employee.CSV файла с REQ. сотрудник, которому необходимо добавить/обновить в Database.Ex (Name, Add1, Add2, City, State, ZIp, SSN .....)

Шаг 2: Создайте одну страницу в приложении, загружающей файл csv. . Я буду читать CSV-файл и создать общий объект List (Employee).

Шаг 3: Вызов хранимой процедуры, которая вставки данных/Обновление от объекта сотрудника

1) Impalement Transaction in code. 
2) loop throw each employee in object. 
3) Rollback if any Error Occurred. 
4) Implement Stored procedure in database for your case like.. 

если (LTrim (RTrim (IsNull (@ssN, '')) == '')) «Ваша логика возвращение конец если

если (ssn!= '') 'Редактировать случай возвращение конец, если

' Существующий сотрудник

--Sample СП

CREATE PROCEDURE sp_Uploademployee 
( 
    @cCode VARCHAR(200), 
    @cName VARCHAR(500), 
    .....ETC 
) 
AS 
SET NOCOUNT ON 
DECLARE @ID INT 
IF ISNULL(@cName,'') <> '' And ISNULL(@ccode,'')<> '' 
BEGIN 
    IF NOT EXISTS (SELECT iID FROM employee WHERE [email protected] AND [email protected] ) 
    BEGIN   
     INSERT INTO employee() 
     VALUES() 
    END 
    ELSE 
    BEGIN 



    END 
END 
ELSE 
BEGIN 
    RAISERROR('your Error', 16, -1) 
    RETURN 
END 
Смежные вопросы