0
시간이 흐른 아래 스크립트가 있는데 수정이 필요합니다. 스크립트는 매일 2 ~ 3 회 실행되어 테이블에서 데이터를 가져옵니다. 일부 데이터는 복제 될 수 있으며 원하는 것은 수정 된 스크립트가 데이터가 존재하지 않는 경우에만 가져오고 테이블에 기록한다는 것입니다.존재하지 않는 데이터가 포함 된 SQL Server 테이블 업데이트
누군가가 데이터 병합을 시도하거나 위치가 존재하지 않는다고 말했습니다.
불행히도 저는 어떻게 구현할 것인지 잘 모르겠습니다. 따라서 저는 여러분 모두에게 도움을 청했습니다. 어떤 도움이라도 대단히 감사하겠습니다.
BEGIN TRY
BEGIN TRANSACTION
Declare @Date As DATE
IF OBJECT_ID('Tempdb..#1','U') IS NOT NULL
DROP TABLE #1
SELECT [EMP_ID],[NAME],[DEPT],[DATE],[Start Time],[LOGIN],[LATE/AWOL],[Team Manager],[Senior Manager],[SITE]
INTO #1
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=\\VF_RSOSDCNASUDA\xxx\SQL\ESO\ALLAttendance.xlsm;HDR=YES',
'SELECT * FROM [ForEmail$]');
SELECT TOP 1 @Date=[DATE] FROM #1
DELETE [dbo].[ALLAttendance$] WHERE CONVERT(char(10),[Date],102)[email protected];
INSERT INTO [dbo].[ALLAttendance$]
SELECT [EMP_ID],[NAME],[DEPT],[DATE],[Start Time],[LOGIN],[LATE/AWOL],[Team Manager],[Senior Manager],[SITE]
FROM #1
DROP TABLE #1
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
***** UPDATE ***** 나는 아래에 와서는이
with CTE
AS
(
SELECT [EMP_ID]
,[NAME]
,[DEPT]
,[DATE]
,[Start Time]
,[LOGIN]
,[LATE/AWOL]
,[Team Manager]
,[Senior Manager]
,[SITE]
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=\\VF_RSOSDCNASUDA\xxx\SQL\ESO\ALLAttendance.xlsm;HDR=YES',
'SELECT * FROM [ForEmail$]')
)
merge [dbo].[ALLAttendance$] t
using CTE s
on s.[EMP_ID] = t.[EMP_ID]
and s.[NAME] = t.[NAME]
and s.[DEPT] = t.[DEPT]
and s.[DATE] = t.[DATE]
and s.[Start Time] = t.[Start Time]
and s.[LOGIN] = t.[LOGIN]
and s.[LATE/AWOL] = t.[LATE/AWOL]
and s.[Team Manager] = t.[Team Manager]
and s.[Senior Manager] = t.[Senior Manager]
and s.[SITE] = t.[SITE]
when not matched by target
then insert ([EMP_ID],[NAME],[DEPT],[DATE],[Start Time],[LOGIN],[LATE/AWOL],[Team Manager],[Senior Manager],[SITE])
values (s.[EMP_ID],s.[NAME],s.[DEPT],s.[DATE],s.[Start Time],s.[LOGIN],s.[LATE/AWOL],s.[Team Manager],s.[Senior Manager],s.[SITE]);
올바른 결과를 얻는다면 '올바른'표시기입니다. 'MERGE' 대신에'INSERT' 문으로 같은 결과를 얻을 수 있습니다. IMHO 이것은 더 간단 할 것이나 당신에게 달려 있습니다. –
감사합니다. Nick. 몇 가지 샘플 데이터로 몇 가지 테스트를 완료했으며 예상되는 결과를 얻었습니다. 그래서 나는 좋은 사람이라고 생각한다. – sly123