트릭을 필요로하는지 설명하기 위해 거기에 넣어 가지고 두 ID를 대상 테이블에 전달하는 것은 까다 롭습니다. 자체 맵을 만들어야합니다. 여기에 자신 만의 스크립트를 만들 수있는 전체 스크립트가 있습니다.
먼저 대상 테이블을 에뮬레이트하기 위해 임시 테이블을 만들었으므로 데모를 여러 번 실행하려는 경우에 대비하여 항상 임시 테이블이 이미 있는지 확인해야합니다.
IF OBJECT_ID('tempdb..#Data_tbl') IS NOT NULL
DROP TABLE #Data_tbl
그런 다음 필요한 두 열만 사용하여 대상 테이블을 만듭니다.
CREATE TABLE #Data_tbl (
DateID INT IDENTITY(1,1)
, [Days] DATE
)
그럼 내가 만든 테이블 변수를 만들지 만 열 이름을 변경하여 작업을 덜 복잡하게 만들었습니다. 필자는 생성 된 ID와 삽입 된 날짜 만 캡처하고 있습니다. 삽입 한 날은 나중에 중요하기 때문에 중요합니다.
DECLARE @mappedIDs TABLE (
InsertedID INT
, [Days] DATE
)
그런 다음 삽입 할 행을 나타내는 테이블을 설정합니다. 그렇게하면 배치에 둘 이상의 행을 삽입 할 때 일어나는 일을 테스트 할 수 있습니다!
DECLARE @inputTable TABLE (
FakeID INT
, [Days] DATE
)
이제 소스에 행을 채우자.
INSERT INTO @inputTable
VALUES (1, '9/2/2016')
다음은 삽입 문입니다. 이 예에서는 요일 만 삽입하고 있지만 필요한 경우 더 많이 삽입 할 수 있습니다. 출력 절은 맵을 작성하려고 할 때 동일하게 유지해야하는 중요한 사항입니다. 당신은 목적지 테이블에서 생성 된 DateID와 날짜를 수집해야합니다.
INSERT INTO #Data_tbl
([Days])
OUTPUT inserted.DateID, inserted.[Days] into @mappedIDs(InsertedID, [Days])
SELECT Days
FROM @inputTable source
이제지도를 보여 드리겠습니다! 나는 (@mappedIDs에) 삽입 된 행을 가져 와서 일 (day)에 내 소스 레코드에 참여시킨다. 이제 FakeID에서 "실제"ID 로의 매핑을 볼 수 있습니다.
SELECT
results.InsertedID, src.FakeID, src.[Days]
FROM @mappedIDs results
INNER JOIN @inputTable src
ON results.[Days] = src.[Days]
가짜에서 진짜로 변환되는 ID는 무엇입니까? –
'일'은 고유합니까? 그렇다면 삽입 후 소스와 대상을 결합하여 매핑을 결정할 수 있습니다. –
-1, -2 -3 등의 가짜 고유 ID를 사용하여 데이터를 전송합니다.이 값을 삽입하면 ID를 추가 처리 할 때 삽입 할 때 실제 ID에 매핑해야합니다. – AnishaJain