2011-08-10 3 views
1

많은 데이터가있는 .csv 문서가 있습니다. 그것에는 71 개의 다른 칼럼이 있습니다.SQLite-manager에서 열을 재정렬하는 방법이 있습니까?

이제이 데이터를 코어 데이터로 가져 오려고합니다. 그러나 xcdatamodel에서 속성을 만들 때 속성은 이름순으로 정렬되며 원하는 순서대로 정렬되지 않습니다. 따라서 .sqlite 파일을 만들 때 열의 순서가 잘못되었습니다. SQLite 관리자에서 주문하려고했지만 .sqlite를 다시 열 때 변경 전과 같은 순서로 열이 있습니다.

SQLite-manager에서 열을 재정렬하는 방법이 있습니까?

답변

1

음, 71 개의 열이 많이 있습니다. 코어 데이터를 사용하고 있기 때문에 조금 비정규 화하려고하는 것이 좋습니다. 핵심 데이터는 표 형식의 데이터베이스가 아닙니다. 즉, 현재 열을 추적하고 데이터를 배열에 저장하는 것이 좋습니다. 그런 다음 필요에 따라 NSManagedObjects로 데이터를 분리합니다.

편집 : firstName, lastName, middleInitial :

이의이 SQLite 데이터베이스가이 순서대로 세 개의 열을했다 척하자. CSV 파일의 순서가 lastName, middleInitial, firstName 인 것으로 가정 해 보겠습니다. CSV 파일이나 sqlite 파일의 순서를 변경할 수 있지만 핵심 데이터를 사용하고 있으므로이 방법을 사용하면됩니다.

모든 속성을 가진 엔티티가 있어야합니다. 필자의 예에서는 "Person"엔티티입니다. 그래서 우리는이 Person 엔티티의 인스턴스를 생성합니다.

Person *newPerson = [[Person alloc] initWithEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:context] insertIntoManagedObjectContext:context]; 

지금, 당신은 당신의 CSV를 구문 분석 할 때 당신이 그것을 액세스 할 수 있도록이 Person 인스턴스에 대한 참조를 유지해야합니다. 나는 Dave DeLong의 CHCSVParser library을 추천한다. 기본적으로 CSV 파일의 이벤트 기반 구문 분석을 허용합니다.

새 필드를 치면 어떤 필드 번호인지 확인하십시오. currentField 변수를 유지하고 새 행을 칠 때 0으로 재설정하고 모든 필드를 증가시켜이 작업을 수행 할 수 있습니다. 자, 필드를 때 번호가 0 또는 첫 번째 필드에 newPerson.lastName 설정합니다. 두 번째 입력란 인 경우 newPerson.middleInitial을 할당합니다. 세 번째 필드에 도달하면 newPerson.firstName을 설정합니다. 아이디어는 sqlite 데이터베이스를 건드리지 않고도 영구적 인 속성을 할당 할 수 있다는 것입니다. 핵심 데이터를 사용하는 경우 이동하는 방법입니다.

+0

.csv- 문서에는 2000 개 이상의 게시물과 71 개의 다른 값이 있습니다. 핵심 데이터는 .sqlite 열을 특수한 순서로 만들었 기 때문에 .csv 문서의 데이터가 올바른 순서로 오도록 변경해야합니다. 나는 이것이 원하는 순서로 SQLite-Manager의 열을 끌어서 쉽게 만들 수 있다고 생각했지만 .sqlite-file을 다시 열면 이전 순서가 표시됩니다. SQLite 관리자의 순서를 변경하는 쉬운 방법이 있습니까? – xqtr

+0

코어 데이터를 사용하는 경우 sqlite로 직접 가져 오지 않으려 고합니다. 대신 NSManagedObjects를 사용하십시오. 주문에 대해 신경 쓸 필요가 없습니다. – Moshe

+0

다른 방법으로 문제를 해결했습니다. Excel에서 .csv 파일의 열 순서를 변경 한 다음 .csv 파일을 .sqlite 파일로 가져온 다음 .sqlite 파일을 내 프로젝트로 가져 왔습니다. 매력처럼 작동합니다! 도움을 주신 Moshe에게 감사 드려요. 그러나 제가 귀하의 답변을 이해했는지 여부는 알 수 없습니다. 문제는 특정 데이터가 저장된 특정 .csv 파일이 있다는 것입니다. 필자는 모든 데이터를 수동으로 삽입 할 필요없이 파일을 가져오고 싶었습니다. 어떻게 Core Data와 NSManagedObjects를 통해 쉽게이 작업을 수행해야하는지 이해할 수 없습니까? – xqtr

관련 문제