2013-10-22 1 views
0

데이터를 데이터베이스로 보내기 전에 데이터 복제를 확인해야하는 경우가 있습니다.데이터베이스와 데이터 테이블 사이의 데이터 존재 여부 확인

기본적으로 열과 시트에 필수 데이터가 포함 된 EXCEL 파일이 있습니다. EXCEL에서 SQL Server 2008 DB로 데이터를 업로드해야합니다.

데이터를 업로드하기 전에 Microsoft는 "Microsoft.Ace.OLEDB.12.0"을 사용하여 EXCEL 데이터를로드하고 WPF Grid를 사용하여 사용자에게 표시합니다.

다음 단계는 EXCEL 파일에서로드 된 데이터를 SQL Server DB에서 사용할 수있는 데이터와 비교하여 확인하는 것입니다. 인보이스 번호라는 기본 열이 있습니다. 이 송장 번호는 요청 된 상품의 출하가 부분적으로 완료되면 모든 Excel 파일에 분산되어 있습니다. 이 특정 인보이스의 전체 항목이 DB에 업로드 될 때까지 업로드중인 데이터가 SQL Server DB에 없는지 확인해야합니다.

엑셀 파일에 여러 개의 열이 있지만 중복 항목에 대해 몇 개의 열을 기준으로 확인해야합니다.

우리는 (이 좋은 방법인지 확실하지 않음)에이를 달성하기 위해 좋은 방법을 제안 무엇

데이터 집합에 SQL Server에서 데이터를로드 할 .NET 데이터 테이블 및 계획에로드 된 EXCEL 데이터를 저장한다. 이 링크를 보았습니다 Duplicacy check between DATABASE and DATATABLE하지만 이것이 내 요구 사항을 해결할 수 있는지 확실하지 않습니다.

미리 감사드립니다.

+0

존재 (여기서 열 = @ 매개 변수 테이블에서 * 선택)하지 않을 경우 다음 나는 당신이 제공 한 링크가 생각대로 – zxc

+0

할 지정할 수있는 저장 프로 시저를 사용 귀하의 솔루션. 무엇이 불확실한가? 내부 조인 (또는 다른 LinQs Intersect)을 사용하면 중복 행을 찾고 비교할 열을 지정할 수 있습니다. – Dannydust

+0

@ 대니 더스트, 내가 사용하고있는 Dataset 및 Datatable 방식 때문에 확실하지 않습니다. DB에 대한 LINQ가 원활하게 작동해야한다는 것을 알고 있지만 적시에 새로 고칠 수있는 실시간 데이터를 확인하기 때문에 의심의 여지가 있습니다. – aioracle

답변

0

나도 시도 할 것 :

SELECT 'Exists' FROM table where id = @itemId --returns string 'Exists' if there is an item 

또는

SELECT ISNULL(id, '0') FROM table where id = @itemId -- returns '0' if there is an item 

또는

SELECT ISNULL(id, 0) FROM table where id = @itemId -- returns 0 if there is an item 

당신은 단지 그들과 합류 여러 테이블에 그것을 확인하고 동일한 작업을 수행해야하는 경우

.

DataTable dt = new DataTable(); 
SqlDataAdapter adapt = new SqlDataAdapter("SELECT id FROM table", connection); 
adapt.Fill(dt); 

for (int i = 0; i < excelDataTable.Rows.Count; i++) 
{ 
    for (int j = 0; j < dt.Rows.Count; j++) 
    { 
     if (excelDataTable.Rows[i]["col_name"] == dt.Rows[j]["col_name"]) ; 
    } 
} 

을 그리고 마지막으로 당신은 확인할 수 있습니다

또 다른 aproach 당신이 링크를 제공 한 사람이, 당신은 당신이 비교할 값을 선택할 수 있습니다, 다음과 같이 그 위에 다음과 루프를 DataTable을 채우기 이 :

Another question with answer

0

나는 배경을 알고 있지만 SQL Server를 사용하는 경우 SQL Server 통합 서비스 (SSIS)라는 훌륭한 유틸리티가 없습니다. 데이터 마이그레이션 (ETL : extract-transform-load)이 정말 쉽습니다. 새로운 유틸리티를 배워야한다는 것을 알고 있지만, SQL Server를 사용한다면 미래에 정말 도움이 될 것입니다! 당신은 Excel에서 워크 플로우가 소스로 파일과 대상으로 SQL 서버에 데이터를로드 할 수 있습니다 SSIS를 사용

.이 같은 끝낼 것 :

enter image description here

+0

솔루션은 좋지만 SSIS 프로젝트에 액세스하고 실행하는 보안상의 영향은 무엇입니까? 나는이 도구를 언제든지 사용하지는 않았지만 반드시이 도구를 사용해보십시오. 그러나이 작업을 실행하려면 관리자 권한이 필요하다고 들었습니다. 따라서 최종 사용자가 EXCEL 파일을 업로드하면 SSIS 패키지가 장애물없이 실행되도록 SQL Server 측에서 수행해야하는 설정이 무엇인지 알 수 있습니다. – aioracle

+0

체크 아웃 : http://technet.microsoft.com/en-us/library/ms141053.aspx – Pellared