2011-08-24 2 views
0

마침내 내 프로젝트의 데이터 마이그레이션 부분에 도달하여 이제 MySQL에서 SQL Server로 데이터를 이동하려고합니다.ssis 데이터 마이그레이션 - 새 대리 키가있는 마스터 세부 레코드

SQL Server에는 새로운 스키마가 있습니다 (매핑은 항상 일대일 매핑이 아닙니다).

나는 오늘 아침에 학습을 시작한 변환을 위해 SSIS를 사용하려고합니다.

우리는 MySQL 및 SQL Server의 해당 테이블에 고객 및 고객 위치 테이블을 가지고 있습니다. SQL Server에서 모든 테이블에는 이제 서로 게이트 키 열 (GUID)이 있으며 스크립트 구성 요소에서 동일한 테이블을 생성합니다.

또한 현재의 mysql 테이블에는 기본 키가 있습니다.

내가 찾고있는 것은 새로 만든 GUID가 상위 키인 고객 위치 테이블에 하위 레코드를 추가하는 방법입니다.

SSIS에 Foreach 루프 컨테이너가 있다는 것을 알았습니다. 여기에 어떤 용도로 사용 되나요?

만약 내가 생각할 수있는 또 다른 가능성은 마스터 데이터가 기본 데이터 흐름 작업의 대상 구성 요소 [테이블]로 전송되기 전에 두 개의 데이터 흐름 태스크를 만들고 [어떻게 든] 새로 만든 GUID와 함께 변수를 추가하고 이전 PrimaryID로 자식 레코드 용 DataTask Flow 소스를 만드는 데 사용됩니다.

간단히 말해서 master에 대한 datatask가 완료되고 child에 대한 datatask가이 마스터 데이터를 읽고 MySQL의 자식 레코드를 SQL Server 테이블에 삽입하면이 작업을 수행 할 수도 있습니다. 이것은 모든 부모 테이블 레코드를 다시 메모리에로드해야한다는 것을 의미합니다.

나는 이것이 너무 혼란과 나는 매우 혼란 :-(나는 나와 함께 부담하고 당신이 더 많은 것을 원하는 경우에 정보를 알려 주시기 때문에 주로 알고 있습니다.

나는 5 월 링크를 통해되었는지 전 구글 검색을 통해 발견하지만, 그들 중 누구도 정말 설명하지 (또는 나는 uderstand 할 수 없습니다) 프로세스가 수행되는 방법.

,369 월

관련,

을 알려 주시기 바랍니다

** 더 검색 및 정제 키워드 후 편집 한 **

그래서이 링크를 발견하고 내 시나리오

How to load parent child data found in EDI 823 lockbox file using SSIS?

답변

0

확인에 사용할 수 있는지 확인하기 위해 그것을 통해가는 여기 내가 할 일이있다. 내 sql 데이터를 ID 열이 설정된 sql 서버의 스테이징 테이블에 넣고 null로 시작하는 최종 GUID에 대한 추가 열을 넣습니다. 이제 레코드에 기본 키가 있습니다.

다음은 비열한 속임수입니다. 필수 필드 (우리는 last_name 사용)를 선택하고 실제 데이터 대신 스테이징 테이블의 id 필드에 값을 삽입하십시오. 이제 guid와 id를 모두 가지고있는 레코드를 얻었습니다. 스테이징 테이블의 guid 필드를 ID 및 사용자가 선택한 필수 필드에 결합하여 업데이트하십시오. 이제 last_name 필드를 실제 데이터로 업데이트하십시오.

부적절한 트릭을 피하고 이것이 한 번만 업로드하는 경우 스테이징 테이블 id가 포함 된 열을 테이블에 추가하십시오. 다시 이것을 사용하여 관련 테이블에 삽입하기위한 GUID를 얻을 수 있습니다. 그럼 끝나면 여분의 칼럼을 버리십시오.

GUID 사용과 관련된 성능 문제가 있다는 것을 알고 계십니까? 그것들을 clustered 인덱스로 만들지 말라. (당신이 differntly를 지정하지 않는 한 그것들은 디폴트로 PK가 될 것이다.) newsequentialid()를 사용하여 그것들을 채운다. 왜 GUID를 사용하고 있습니까? ID가 작동하면 일반적으로 ID를 사용하는 것이 좋습니다.

+0

@ HLGEM- 조언 해 주셔서 감사합니다. 나는 그것에 대해 연구 할 것이다. GUID의 이유는 Domain Concerns에서 비롯되었으며 성능 문제를 알고 있습니다. 내 결과로 당신을 업데이트 할 것입니다 – TheMar

+0

@ HLGEM- 나는 당신의 제안을 사용하는 방법의 절반입니다. 대상 테이블에 추가 열을 추가 한 다음 나중에 삭제하기로 결정했습니다. 일치하는 레코드가없는 조회 구성 요소에 문제가 있습니다. 일단 제어 흐름이 작동하면이 대답을 업데이트 할 것입니다. – TheMar

+0

@ HLGEM- 조회에 대한 또 다른 질문을 게시했습니다. SSIS : 조회 구성 요소 : 조회 중에 일치하는 행이 없습니다 (http://stackoverflow.com/questions/7209231/ssis-lookup-component-row-yielded-no-match-during-lookup). 당신이 거기에서 올바른 방향으로 나를 가리킬 수 있다면. 나는 그것을 여기에서 묻고 싶었다. 그러나 나는이 공간을 혼란스럽게하지 않을 것이라고 생각했다. – TheMar

관련 문제