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これは簡単ですが、それはあなた次第です。 –
おかげでニック。私はちょうどいくつかのサンプルデータでいくつかのテストを完了し、私は期待される結果を得ました。だから私はいいと思う。 – sly123