У меня есть файл размером 2 МБ, не слишком большой, который я хотел бы поместить в базу данных sqlite, чтобы я мог найти его. Есть около 30 тысяч записей в формате CSV с шестью полями на строку. Насколько я понимаю, sqlite на iPhone может обрабатывать базу данных такого размера.
Я выбрал несколько подходов, но все они были медленными> 30 с. Я пробовал:
1) Использование кода C для чтения файла и разбивки полей на массивы.
2) Использование следующего кода Objective C для анализа файла и помещения его непосредственно в базу данных 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);
}
Я что-то упустил? Кто-нибудь знает быстрый способ получить файл в базу данных?
Или возможно перевести файл в формат sqlite, который можно прочитать непосредственно в sqlite?
Или я должен превратить файл в plist и загрузить его в словарь? К сожалению, мне нужно выполнить поиск по двум полям, и я думаю, что словарь может иметь только один ключ?
Луи, спасибо за ваш ответ.
Я должен был упомянуть, что я хочу записать данные в базу данных только один раз в начале приложения, а затем позже мне нужно только выполнить чтение базы данных, без записи.
Можете ли вы рассказать мне, как создать базу данных sqlite3 непосредственно из файла CSV в процессе сборки?