SQL MERGE를 수행하는 데 powershell 함수를 사용하고 있습니다. 내 삽입이 작동하지만 내 삭제는 내 목표 테이블의 모든 행을 삭제합니다. 변수이 PowerShell을 치환되고처럼 내 SQL 문은 같습니다SQL 병합 대상 테이블의 모든 행을 삭제합니다.
MERGE INTO $($Target) AS Target
USING $($Target)_TEMP AS Source
ON Target.[$($PrimaryKey)] = Source.[$($PrimaryKey)]
WHEN NOT MATCHED THEN
INSERT ($InsertColumns) VALUES ($InsertValues)
WHEN NOT MATCHED BY Source THEN
DELETE;
당신은 여기에 전체 PowerShell을 기능을 볼 수 있습니다
: http://pastebin.com/uWY6VfmU
예 테이블 데이터 :
이domsamgrp (primary key) samaccountname GroupName Domain whenchanged
MYDOMAIN\user1\Tableau_Client user1 Tableau_Client MYDOMAIN 55:46.0
MYDOMAIN\user2\Tableau_Client user2 Tableau_Client MYDOMAIN 55:46.0
MYDOMAIN\user3\Tableau_CMO user3 Tableau_CMO MYDOMAIN 55:48.0
MYDOMAIN\user1\Tableau_EDM user1 Tableau_EDM MYDOMAIN 55:50.0
MYDOMAIN\user5\Tableau_EDM user5 Tableau_EDM MYDOMAIN 55:49.0
[MERGE documentation] (https://msdn.microsoft.com/en-us/library/bb510625.aspx)에서 보면 'USING'에는 테이블 이름 뒤에 열 이름이 필요합니다. 나는 그것에 정통하지는 않지만'D' 섹션을 체크 아웃하십시오 –
delete 문에서 소스 테이블을 삭제 하시겠습니까? 원본 테이블에서 일치하는 것이 없으면 delete 문이 현재 대상 테이블에서 삭제되기 때문입니다. – ZLK
@ZLK - 내 목표 테이블에서 특정 행을 삭제하고 싶습니다. –