0

약 20 개의 데이터 열과 대략 11,000 개의 레코드가있는 원본 플랫 파일이 있습니다. 각 레코드 (행) 정보 등분할 테이블의 열은 제약 조건을 따르는 열에 따라 여러 테이블로 구성됩니다.

같은

patientID, PatietnSSN.PatientDOB, PatientSex, PatientName, Patientaddress, PatientPhone, PatientWorkPhone, PatientProvider, PatientReferrer, PatientPrimaryInsurance, PatientInsurancePolicyID이 포함되어 있습니다.

제 목표는이 데이터를 SQL 데이터베이스로 이동하는 것입니다.

나는 데이터 모델

나는 당신이 볼 수 있다는 것을 수행하는 방법 확실하지 오전하지만 모든 레코드를 이동하는 대량 삽입을하고 싶은 알고

와 아래로 데이터베이스를 만들었습니다 참조 무결성을 보장하기 위해 제약 조건이되어야합니다. 내 접근 방식은 어떻게해야합니까? 나는이 모든 잘못에 대해 이야기 할 것인가? 지금까지 SSIS를 사용하여 데이터를 단일 스테이징 테이블로 가져 왔으며 이제는 해당 스테이징 테이블에 11k 더하기 레코드를 쓰는 방법을 알아야합니다 ... 스테이징 테이블의 레코드 1은 레코드 하나를 생성합니다 거의 모든 테이블에서 "제공자"및 "리퍼러"와 같은 1 대 다수 관계가있는 제공자를 제외하고 하나의 제공자는 많은 환자와 연결되지만 한 명의 환자는 하나의 제공자 만 가질 수 있습니다.

나는 이것을 충분히 설명하기를 희망한다. 도와주세요!

+0

가 고려 인간 :-)에게 이니까 SQLServer에서 저장 프로 시저/함수 지원을 조사합니다. 다음과 같은 몇 가지 절차를 작성할 수 있습니다. 메인 레코드를 삽입하고, id를 반환 한 다음, 반환 된 ID에 대한 참조가있는 관련 레코드를 삽입하십시오. –

+0

정말 필요하지 않다면 appt/providers 참조를 제거합니다. 순환 종속성으로 인해 추가 작업이 발생할 것입니다. 또한 DB를 업데이트하는 데 사용할 도구는 무엇입니까? 원시 SQL 또는 프로그래밍 언어? 올바르게 모델링 된 경우 많은 ORM이이를 처리합니다. 이 질문을 받았다면 Python으로 스크립트를 작성하거나 익스프레스와 같은 ETL 도구를 사용하십시오. – SteveJ

+0

@ed Orsi는 SSIS 패키지가 어떤 특정 순서로 삽입하지 않을 것이기 때문에이 제약을 위반하지 않을 것입니다. 그래서 어떤 레코드가 첫 번째 두 번째 등을 쓰게 될지를 제어 할 방법이 없습니다 ...? –

답변

0

질문이 일반적인 것처럼, 나는 올바른 대답을 얻기 위해 일반적인 방법으로 대답에 접근 할 것입니다.

목표는 플랫 파일 데이터를 관계형 데이터베이스로 가져 오는 것입니다. 이는 매우 일반적인 작업이며 최소한 ETL 프로세스의 하위 집합입니다. 따라서 ETL에 대한 자세한 내용을 보려면 검색을 시작하십시오.

본인의 근본적인 문제는 두 가지입니다. 첫째, 많은 양의 데이터를 삽입해야합니다. 둘째, 관계형 데이터베이스에 삽입하는 것입니다.

먼저 두 번째 문제점부터 시작하십시오. 매번 모든 데이터를 삽입 할 수있는 것은 아닙니다. 예를 들어 환자와 1 : 많은 관계를 유지하는 공급자 테이블이 있습니다. 즉, 제공 업체가 존재하는지 또는 생성해야하는지 여부에 대해 플랫 테이블의 각 환자 행에 대해 질문해야합니다. 또한, 다음에 작성된 항목에서 작성된 항목의 ID를 참조 할 수 있도록 작성 순서를 유지해야하는 경우도 있음을 의미하는 ID를 시드했습니다. 이것이 의미하는 바는 간단한 SQL 삽입 세트보다 더 복잡한 작업이 필요하다는 것입니다. 노력과 관련된 논리가 필요합니다. 이것을 접근하는 방법은 여러 가지가 있습니다.

  • Pure SQL/TSQL; 수행 할 수는 있지만 많은 작업이 필요하며 디버그/문제 해결이 어려울 것입니다.
  • 프로그램 작성 : 이것은 많은 유연성을 제공하지만 프로그래밍 도구를 프로그래밍하고 사용하는 방법을 알아야합니다. 데이터베이스 (예 : ORM)
  • 자동화 된 ETL 도구를 사용하십시오. some examples
  • SQL 서버의 플랫 파일 가져 오기 기능 사용
  • Toad, Datagrip, DBeaver 등과 같은 가져 오기 기능이있는 IDE를 사용하십시오.

이러한 접근 방식 중 일부는 일부 연구 및 학습을 필요로합니다.이 포럼에서는이를 사용하는 방법을 알 수 없습니다. 그리고 어느 것이 당신이 사용하기를 원하는지에 대한 결정은 프로세스가 자동화되어야하는 방법에 따라 다소 좌우 될 것입니다.

첫 번째 문제는 큰 데이터 삽입에 관한 것입니다. SQL에는 벌크 삽입 docs을위한 기능이 있지만 데이터를 먼저 처리해야합니다.

개인적으로 (내 의견에 따라) .Net 개발자입니다. 그러나이 작업을 감안할 때, 나는 여전히 Python으로 스크립트를 작성한다. 학습 곡선은 Python에서 매우 친절하고 파일과 데이터베이스 작업을위한 훌륭한 도구가 많이 있습니다. 닷넷과 EF는 파이썬이 시작하지 않는다는 것을 알기 위해 오버 헤드가 많이 든다.하지만 그것은 나다.

희망이 있으면 시작하는 데 도움이 될 것입니다.

0

스티브 당신은 보스 와우 감사합니다 - 에드 탱크뿐만 아니라! 나는 모든 사람들의지도를 고려하여 이것에 대한 간단한 해결책을 가지고 도망 갈 수 없다는 결론을 내렸다. 더 큰 함의가 있기 때문에이 기초 작업을 내 노력을 활용할 수있는 방식으로 달성하는 것이 이치에 맞다. 미래의 프로젝트를 위해. 데이터 모델을 돌보고 데이터를 가져 오기위한 간단한 가져 오기 절차를 작성하기 위해 EF를 사용하는 간단한 .net 웹 응용 프로그램을 진행할 것입니다.이 작업을 수행하는 방법에 대한 개념이 있지만이 보드의 도움으로 따라 와야 확실한 성공이야! 감사합니다 모든 조이 내가 사용 계획 (곡선의 의견을 내가 복잡성에 동의하고 학습하지만 MS 제품에 대한 선호도가) 기록 도구

1) 푸른 SQL 데이터베이스 (데이터 저장소) 2) 비주얼 스튜디오 2017 CE (IDE) 3) C#을 (랭) 4) .NET MVC (프로젝트 유형) 5) EF 6 (ORM) 6) 그레이스 (나는

관련 문제