2013-06-26 7 views
0

연결된 SQL Server 테이블 (백 엔드)이있는 Access (2010) 데이터베이스 (프런트 엔드)가 있습니다. 그리고이 테이블에 텍스트 파일을 가져와야합니다. 이 텍스트 파일은 매우 큽니다 (일부 필드는 200.000 개가 넘고 필드는 약 20 개)Access에서 연결된 SQL Server 테이블로 텍스트 파일 가져 오기

문제는 SQL 테이블에서 tex 파일을 직접 가져올 수 없다는 것입니다. 일부 파일에는 시작 부분에 빈 줄이 포함되어 있으며 테이블에서 가져 오지 않으려는 다른 줄이 있습니다. 여기 내 Access 데이터베이스에서 수행 한 작업은 다음과 같습니다.

1) 텍스트 파일에 대한 링크를 만들었습니다.

2) 나는 또한 SQL Server 테이블

3A)에 대한 링크가 내가 추가] 쿼리를 생성하는 링크의 SQLServer 테이블에 복사 링크 된 텍스트 파일에서 레코드를.

3b) 두 테이블을 모두 열고 텍스트 파일의 레코드를 SQL Server 테이블의 레코드에 복사하는 VBA 코드를 만들었습니다. (나는 DAO와 ADODB를 사용하여 여러 가지 방법으로 시도했다.)

[3a 및 3b 단계는 데이터를 가져 오는 방법이 서로 다른 두 가지 방법입니다. 나는 둘 중 하나만 사용합니다. 옵션 3b를 선호하는 이유는 언제든지 얼마나 많은 레코드를 가져와야 하는지를 상태 표시 줄에 카운터를 실행할 수 있기 때문입니다. 나는 그가 얼마나 멀리 있는지 볼 수있다.]

문제는 실행하는데 많은 시간이 걸린다는 것이다. 그리고 나는 많은 시간을 의미한다 : 70.000 개의 레코드와 20 개의 필드가있는 파일의 경우 3 시간! Access 테이블 (TXT에서 Access까지)에서 동일한 작업을 수행하면 속도가 훨씬 빨라집니다.

나는 (이보다 더 많은 기록을 가지고) 15 개의 테이블을 가지고 있으며 매일 이러한 수입을 만들어야합니다. 매일 밤 20시에서 6시 사이에이 절차를 자동으로 실행합니다.

더 쉬운 방법이 있나요? 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+0

SSIS를 옵션으로 사용하고 있습니까? –

+1

텍스트 파일에서 로컬 Access 테이블로 데이터를 가져온 다음 단일 'INSERT INTO LinkedTable SELECT * FROM LocalTable'을 사용하여 데이터를 SQL Server 테이블에 복사 해 보았습니까? –

+0

질문에 대답 한 경우 항상 대답을 수락 할 수 있습니다. :) –

답변

1

나에게 SSIS의 좋은 사례라고 생각합니다.

플랫 파일 (데이터 원본)에서 SQL DB (대상)로 데이터 흐름을 만들 수 있습니다.

몇 가지 유효성 검사 또는 선택 단계를 추가 할 수 있습니다.

온라인으로 this one과 같은 자습서를 쉽게 찾을 수 있습니다. 또한

, 당신은 고드이 언급 한 일을, 로컬 액세스 테이블에 텍스트 파일에서 데이터를 가져온 다음 SQL Server 테이블에 데이터를 복사하는 하나의 INSERT INTO LinkedTable SELECT * FROM LocalTable를 사용 할 수 있습니다.

+0

감사합니다. SSIS 옵션을 공부해야 할 시간이 있습니다. 지금은 텍스트 파일을 로컬 Access 데이터베이스로 가져오고 추가 쿼리를 실행하여 SQL Server 테이블에 이러한 레코드를 추가했습니다. (Gord 언급처럼) 지원해 주셔서 감사합니다! :) –

+0

오케이. 나는 Gords의 대안을 제시했고 그의 코멘트를 upvoted했다. –

관련 문제