2013-04-02 4 views
5

VBA 질문VBA는 역순으로 라인으로 큰 텍스트 파일 라인을 읽을

큰 로그 파일 (500,000 주위 선), 내가 마지막에서 즉, 역순 라인으로 라인을 읽을 필요가있다 첫 번째 줄에 줄. 이 난은 Microsoft 스크립팅 런타임 참조 FileSystemObject를 사용할 수 있습니다 알고 있지만

지금있는 TextStream의에서는 ReadLine 방법에 대한 같은 그런 옵션, 나는이처럼 생각할 수있는 유일한 방법은,이없는 카운터를 가지고 있으며, 내가 읽은 각각의 줄에 대해 이전 줄을 건너 뛰지 만, 확실히 이것은 충분하지 않습니다. 모든 제안 코드/알 고를 많이 주시면 감사하겠습니다.

+0

로그 파일의 형식과 몇 줄의 데이터를 표시 할 수 있습니까? 또한 역전 된 데이터를 사용하는 방법, 다른 파일 또는 MS Excel 2007 + 통합 문서에 넣을 방법을 알려주십시오. . LogID와 같은 KeyColumn이 있습니까? –

+1

큰 파일에서 가장 좋은 옵션은 ADO 및 OLE DB 텍스트 파일 드라이버를 사용하는 것입니다. [MSDN : 텍스트 파일에 관한 많은 ADO] (http://msdn.microsoft.com/en-us/library/ms974559.aspx)를 참조하고 ORDER BY * 키 열 이름으로 데이터를 쿼리하십시오. * DESC –

답변

3

로그가 순서를 결정할 수있는 필드가있는 데이터베이스 종류 인 경우 (날짜 필드 또는 행 번호 필드가 있음), 그렇다면 SQL 쿼리와 함께 ADO 솔루션을 사용하여 로그를 역으로 읽으려고 할 수 있습니다 주문 (ORDER BY ... DESC). 따라서, 처음부터 끝까지 읽을 수 있습니다. 또는 일반적으로 ADO를 사용해보십시오.

+1

+1 +1, ORDER BY와 함께 ADO를 사용하고 [MSDN : 텍스트 파일에 관한 많은 ADO] (http://msdn.microsoft.com/en-us/library)를 참조하십시오. /ms974559.aspx) –

+0

텍스트 파일 및 ADO http://msdn.microsoft.com/en-us/library/ms974559.aspx –

+0

Thx 얘들 아, 이건 정말 좋은 접근 방법이지만, 필자는 줄을 읽을 줄 모른다. 반대로 라인의 각 라인을 정규화하지 않았을 때, 나는 반대로 읽을 필요없이 그것을 수행하는 "알 고"를 찾아 낸다. 입력에 다시 한 번 감사드립니다! –

1

파일이 줄 기반이 아니거나 문자 기반이더라도 파일의 역순으로 줄을 읽을 수있는 방법은 없습니다. 텍스트가 줄로 분리되는 방법은 텍스트에 줄 바꿈 문자가있는 위치에 의해서만 결정됩니다.

처음부터 줄을 읽은 다음 회전 버퍼에 저장할 수 있습니다. 예를 들어 파일 끝에 도달하면 버퍼의 마지막 1000 줄을 사용할 수 있습니다. 이렇게하면 모든 단일 행에 대해 전체 파일을 읽지 않고도 버퍼에서 액세스 할 수있는 특정 수의 줄이 있습니다.

파일에 몇 줄이 있는지 알았 으면 버퍼를 다시 채워야 할 때 특정 줄 수를 건너 뛰고 다음 줄을 버퍼로 읽을 수 있습니다.

+0

페이지 별 IO 개선은 실제로 –

관련 문제