2009-10-19 5 views
0

Microsoft Excel에서 CSV 파일 내의 SQL Server 및 고객 내부에서 테이블 (고객)을 동기화하는 더 좋은 방법은 무엇입니까?SQL Server와 CSV 파일 동기화

Ok : 여기에 설명이 있습니다. C# .NET 2008에서 소프트웨어를 개발하고 SQL Server 2005에서 Customers 테이블을 만듭니다.이 테이블의 내용은 CSV 파일에서 가져온 것으로 사용자가 추가 할 수 있습니다 SQL 테이블에 CSV 파일보다 많은 필드가 있기 때문에 자세한 정보가 필요합니다.

첫 번째 시간은 쉽습니다. 저는 CSV 파일의 각 줄을 ADDNEW 만합니다. 그러나이 두 번째 필드를 사용하여 모든 테이블을 처음부터 다시 가져올 수는 없으므로 SQL 테이블과 CSV 파일의 각 레코드를 자동으로 확인할 수있는 메서드가 필요합니까? 아니면 레코드를 하나씩 처리해야합니까?

+0

CSV 데이터에 키 필드가 있습니까? 이것은 초기 문제로서 CSV의 레코드를 테이블의 데이터와 일치시키는 방법을 찾는 것입니다. 두 번째 문제는 CSV의 키가 변경되지 않았거나 재미가 없다는 것을 보증하는 것입니다. 마지막으로, "레코드가 CSV에서 제거되면 어떻게합니까?"라는 질문에 대한 일반적인 설명이 있습니다. 소프트웨어의 문제가 아니라 삭제 작업 방식을 제어 할 수 있습니다. – Murph

+0

CSV 데이터에 키 필드가 있습니다.() 키 필드를 사용하여 1) C 번호는 CSV의 각 라인을 읽고 2) 절차는 레지스트리를 기존 요청하는 저장 프로 시저에 모든 열을 전달합니다, 그리고 : 여기 내가 어떻게 생각하고 무엇을 - 그것은 존재 하는가? . 예 : 업데이트 (변경 여부와 관계 없음) 및 UPDATED_BY_USER 이라는 필드를 TRUE로 설정합니다. do not : 3) CSV의 레코드 끝에서 저장 프로 시저가 CHECKED = FALSE 인 고객의 모든 레코드를 삭제합니다 (즉,이 레코드가 CSV 파일에서 삭제되었음을 의미 함). 그러면이 레코드가 모두 거짓으로 설정됩니다. 고객 표의 레코드 맞습니까? – Eduardo

답변

0

SQL Server Integration Services를 살펴보면 원하는 모든 것을 할 수 있습니다.

코드를 작성하려면 CSV의 모든 필드 해시를 만들고이를 사용하여 각 행을 비교하는 것이 좋습니다. 다른 해시 = 변경 = 업데이트 된 행.

+0

해시 사용의 개념은 깔끔합니다 (내가 아는 아이디어 중 하나이지만 솔루션으로 머리 속에 등록 할 수는 없습니다) – Murph

0

CSV 테이블과 추가 정보를 하나의 테이블과 하나의보기로 분리 할 수 ​​있습니다. 당신은 CSV 파일 자체의 단지 바보 거울 하나 개의 테이블이 있고, 업데이트가 용이합니다 :

TRUNCATE TABLE csvmirror; 
    BULK INSERT csvmirror 
    FROM 'P:\ath\to\csvfile.csv' WITH 
    (FIELDTERMINATOR = ',' 
    , ROWTERMINATOR = '\n'); 

그럼 당신이 직접 CSV 파일 데이터를 보완하는 'csvmirror'테이블에 뷰를 생성 귀하의 여분의 데이터를 데이터베이스에서.

관련 문제