[SQL] 하나에 동일한 데이터베이스를 병합
SQL하나에 동일한 데이터베이스를 병합
우리는 백만 행의 avarage 75 개 테이블 15 개 데이터베이스를 가지고있다. 모두 같은 스키마하지만 서로 다른 데이터. 우리는 이제 하나의 데이터베이스에 모든 15을 가져다하기 위해 클라이언트가 요구 사항을 제공하고있다. 사용자의 로그인에 의해 필터링 된 데이터의 각 세트.
응용 프로그램에 대한 변경 사항은 필터링을 수행 완료되었습니다. 우리는 이제 하나에 모든 데이터베이스를 통합하는 작업에 남아 있습니다.
문제는 PK의로 PK와 FK 충돌하고 우리가 1의 15 개 PK ID를해야합니다 있도록 FK 년대는 int 타입이다.
하나 개의 아이디어가 사용하는 것입니다. 그물과 DBML는 PK와 FK와 LINQ 계약을시키는 중복 데이터를 처리하는 코드를 사용하여 새 데이터베이스에 새로운 기록과 같은 기록을 삽입합니다.
어떤 다른 방법이이 작업을 수행하려면?
해결법
-
==============================
1.이 기록은 모든 데이터베이스에서 고유 한 기본 키가없는 경우 데이터베이스를 통합하는 사소한 작업 적이 없습니다. 몇 주 전에 내가 엔티티 프레임 워크를 사용하기로 결정하는 유사한 통합 스크립트를 만들었습니다.
이 기록은 모든 데이터베이스에서 고유 한 기본 키가없는 경우 데이터베이스를 통합하는 사소한 작업 적이 없습니다. 몇 주 전에 내가 엔티티 프레임 워크를 사용하기로 결정하는 유사한 통합 스크립트를 만들었습니다.
먼저 좋은 소식. EF의 DbContext API를 그것은 완전한 객체 그래프를 삽입하고 새로 생성 된 기본 키 외래 키의 EF 돌봐를 만들기 위해 엄청나게 쉽다. 이 쉽게 왜 그런지 이유는 객체의 상태가 추가로 변경 될 때 그 준수의 모든 개체가 삽입의 올바른 순서 밖으로 잘 EF 수치로 추가 될 것입니다. 이것은 참으로 위대하다! 그것은 제가 예를 들어 T-SQL에서 일을해야하는 경우 여러 날이었을 것입니다 몇 시간에 복사 루틴의 핵심을 구축했다. 후자는 너무 많은 오류가 발생하기 쉬운입니다.
물론 생활은 쉬운 일이 아니다. 이제 나쁜 소식 :
사소한 아니었지만 그래서 그것을 행할이고 작업은 비교적 짧은 시간에 이루어졌다. 나는 확신이 더 많은 시간이 걸렸을 것 이상의 버그가 있었을 것이다 다른 대안 (전혀 행할는 경우 t-SQL, 통합 서비스, BIDS). 그리고이 지역의 버그와 문제는 그들이 훨씬 나중에 명백해질 수 있다는 것이다.
나중에 내가 2에서 설명하는 문제가) AsNoTracking와 소스 오브젝트를 가져 오는 관련되어 있음을 발견했다. 이 흥미로운 게시물을 참조하십시오 : 엔티티 프레임 워크 (6) - 내 getHashCode ()를 사용합니다. 더 나은 수행하고 메모리 소비를 줄일 수 있기 때문에 나는 AsNoTracking을 사용했다.
from https://stackoverflow.com/questions/21483746/merge-identical-databases-into-one by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 VBA를 사용하여 서식있는 텍스트 메모에 액세스 테이블에 텍스트 필드를 변환하는 (0) | 2020.07.18 |
---|---|
[SQL] MS 액세스 날짜 트리거 에뮬레이션 (0) | 2020.07.18 |
[SQL] 예외 : SQLException 이름 잘못된 열 ...? (0) | 2020.07.18 |
[SQL] 사이베이스는 : 설정하는 것이 가능하다 @@ 오류 (0) | 2020.07.18 |
[SQL] 일반적인 열 두 dataframes 가입 (0) | 2020.07.18 |