2009-09-04 11 views
1

일련의 CSV 파일을 가져 와서 Access 데이터베이스에 레코드를 저장해야합니다. 이것은 그 자체로 너무 많은 이슈가 아닙니다.CSV 가져 오기 (가변 필드)

각 필드의 수가 달라질 수 있으므로 각 CSV 파일의 형식이 가변적이라는 사실 때문에 복잡합니다.

생각해 볼 수있는 가장 좋은 방법은 80 개의 마스터 필드가 있고 각 CSV 파일에 80 개의 필드 중 일부가 포함될 수 있다는 것입니다. 처리중인 내용을 알려주는 유일한 방법은 CSV 파일의 필드 헤더를 보는 것입니다. Access 파일에 기록 된 데이터에는 80 개의 필드가 모두 포함되어야합니다 (누락 된 필드는 null 값으로 작성되어야합니다).

휠을 다시 발명하기보다는이 변수 매핑/가져 오기를 처리하는 코드를 아는 사람이 있습니까?

또는 올바른 방향으로 어떤 포인터를 주시면 감사하겠습니다.

답변

4

.NET 용 CSV 판독기 라이브러리는 LumenWorks'입니다. 그것은 Access에 데이터를 삽입하지 않을 것이고, 여러분은 컬럼 차이를 처리하기위한 코드를 작성해야 할 필요가 있다고 생각합니다.하지만 자신의 파서를 롤링하는 것보다 더 쉽게 만들 것이고 더 빨라질 것입니다.

+0

작품) 해당 마스터 필드 색인/ID/이름 입력 필드 색인 또는 이름의 목록을 저장하여 나중에 참조 할 수 있도록 매핑을 절약 할 수 있습니다! LumenWorks, Vinko를 지적 해 주셔서 감사합니다! –

0

일반적으로 반복되는 데이터 전송을위한 기본 자동 CSV 가져 오기에서는 일관된 입력 파일이 합의 된 사양으로 제공되어야합니다.

사용자가 응용 프로그램에 CSV 파일을 가져 오는 경우 CSV 파일에 필드를 나열하여 (예 : 첫 번째 행의 값을 읽음) 드롭 다운 목록을 표시하여 기본 매핑을 수행 할 수 있습니다 필드 옆에 마스터 (db) 필드 목록이 있습니다.

당신은 마법처럼

+0

CSV 파일의 사양을 제어 할 수 없으며 그대로 받아 들여야합니다. 직접 입력이 없습니다. 프로그램에서 CSV 파일을 검색하고 자동으로 처리하므로 프로그램은 개별 헤더를 검사하여 출력 레코드에 매핑하여 데이터베이스 레코드를 작성해야합니다. – phrenetic

+0

사용자 입력이 없으면 적어도 필드/열 머리글은 일관성이 있어야합니다. 이 경우 ColumnHeader = DBFieldName 링크를 알고있는 DB에 열 맵을 만든 다음 각 파일에 대한 입력 매핑을 자동으로 생성합니다. –

+0

마크 - 감사합니다. 나는 같은 결론에 도달했고, 이제 이것을 성공적으로 구현했다. – phrenetic

관련 문제