Czytaj duży plik do tabeli sqlite w Celu-C na iPhone

Mam plik 2 MB, niezbyt duży, który chciałbym umieścić w bazie danych sqlite, aby móc go przeszukać. Istnieje około 30 tys. Wpisów w formacie CSV, z sześcioma polami na linię. Rozumiem, że sqlite na iPhone może obsługiwać bazę danych o tej wielkości.

Podjąłem kilka kroków, ale wszystkie były powolne> 30 sekund. Próbowałem:

1) Użycie kodu C do odczytania pliku i przeanalizowania pól w tablice.

2) Używając następującego kodu Objective-C do parsowania pliku i umieszczenia go bezpośrednio w bazie danych sqlite:

NSString *file_text = [NSString stringWithContentsOfFile: filePath usedEncoding: NULL error: NULL];

NSArray  *lineArray = [file_text componentsSeparatedByString:@"\n"];

for(int k = 0; k < [lineArray count]; k++){
    NSArray *parts = [[lineArray objectAtIndex:k] componentsSeparatedByString: @","];

    NSString *field0       = [parts objectAtIndex:0];
    NSString *field2       = [parts objectAtIndex:2];
    NSString *field3       = [parts objectAtIndex:3];

NSString *loadSQLi = [[NSString alloc] initWithFormat: @"INSERT INTO TABLE (TABLE, FIELD0, FIELD2, FIELD3) VALUES ('%@', '%@', '%@');",field0, field2, field3];


    if (sqlite3_exec (db_table, [loadSQLi  UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK) {
        sqlite3_close(db_table);
        NSAssert1(0, @"Error loading table: %s", errorMsg);
    }

Czy czegoś mi brakuje? Czy ktoś zna szybki sposób na pobranie pliku do bazy danych?

Czy jest możliwe przetłumaczenie pliku na format sqlite, który można odczytać bezpośrednio w sqlite?

Czy powinienem zamienić plik na plist i załadować go do słownika? Niestety muszę przeszukać dwa pola i myślę, że słownik może mieć tylko jeden klucz?

Louis, dziękuję za odpowiedź.

Powinienem był wspomnieć, że chcę tylko raz zapisać dane do bazy danych na początku aplikacji, a potem muszę tylko czytać bazę danych, bez zapisów.

Czy możesz mi powiedzieć, jak wygenerować bazę danych sqlite3 bezpośrednio z pliku CSV w ramach procesu budowania?

questionAnswers(3)

yourAnswerToTheQuestion