2012-05-25 2 views
1

나는 18 만 줄이 넘는 file.csv 파일이 있습니다. 나는 그걸로 약 8 줄 밖에 고를 필요가 없다.CSV 파일 조회 - 목표 C

"id", "name", "subid" 
"1", "Entry no 1", "4234" 
"1", "Entry no 2", "5233" 
"1", "Entry no 3", "2523" 
. . . 
"1", "Entry no 8", "2322" 
"2", "Entry no 1", "2344" 

나 전체를 색인하지 않고 단지 모든 ID 1과 데이터 또는 다른 번호를 선택하기위한 방법이 있나요 :이 라인의 각이 파일은 다음과 같은 형태가 될 것이다, 그래서 동일한 ID를 가고있다 파일을 데이터베이스 (SQLite 또는 Core Data)에 저장하면 응용 프로그램이 180,0000 개의 레코드를 색인화해야하는 주요 성능 문제가 발생합니다. 이 모든 것은 iPhone 용이며 iOS 5에 있습니다.

도움 주셔서 감사합니다.

답변

1

Dave DeLong의 CHCSVParser에 대한 좋은 소식입니다.

NSXMLParser과 조금 비슷합니다. 원하지 않는 모든 행을 건너 뛰고 을 수행하면이됩니다.

+0

샘플 코드를 제공해 주시겠습니까? – CoreCode

2

CSV를 구문 분석하고 값을 로컬 변수에 저장하십시오. 튜토리얼 (들) 목표 - C 체크 아웃을 통해 CSV를 구문 분석 다음의 경우 :
http://www.macresearch.org/cocoa-scientists-part-xxvi-parsing-csv-data
http://cocoawithlove.com/2009/11/writing-parser-using-nsscanner-csv.html

종류의 안부

+0

RAM에 엄청나게 큰 변수를 만들지 않겠습니까? 또한 NSMutable 배열에 포함됩니까? – CoreCode

+0

저장하려면 8 줄만 필요하다고하셨습니다. –

+0

링크를 클릭하면 큰 파일을 읽는 데 관심이 있다면 도움이 될 것입니다. http://stackoverflow.com/questions/1044334/objective-c-reading-a-file-line-by-line –

2

난 강력하게 코어 데이터에서 확인이 색인됩니다 두는 것이 좋습니다 있지만, 그것은 실제로 좋은 일입니다. 왜냐하면 조회가 빠른 속도로 진행될 것이고, 매번 핵심 자료를 찾는 것보다 문서를 파싱하는 것이 오버 헤드로 인해 지불해야 할 작은 금액 일 것입니다.

+0

사실,이 소프트웨어는 매일 180,000 개의 새로운 파일을 다운로드하고 이전 데이터베이스를 삭제하고 새 파일을 데이터베이스로 구문 분석해야합니다. 또한, 앱은 8 라인을 사용하며 다른 라인은 절대 사용하지 않습니다. (어떤 라인이 사용되는지는 앱을 다운로드 한 사람에 따라 다릅니다.) – CoreCode

+0

@CoreCode 그 경우 처리가 완료된 것이 좋습니다. 서버 측에서 클라이언트의 로그인 자격 증명에 따라 8 줄을 얻을 것이라고 가정합니다. 서버가 조회를 수행하고 클라이언트에 해당 8 줄을 반환하면 훨씬 더 좋을 것입니다. 또한 보안과 물론 네트워크 다운로드 시간을 줄이는 것이 좋습니다. –

+0

슬프게도, 나는 서버쪽에 대한 통제권이 없습니다. 나는 앱만 관리한다. – CoreCode