我有一个 2 MB 的文件,不是太大,我想将它放入一个 sqlite 数据库中以便我可以搜索它。CSV 格式的条目大约有 30K,每行有六个字段。我的理解是 iPhone 上的 sqlite 可以处理这种大小的数据库。
我采取了一些方法,但它们都慢了 > 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 并将其加载到字典中?不幸的是,我需要搜索两个字段,我认为字典只能有一个键?
路易斯,谢谢你的回复。
我应该提到我只想在应用程序开始时将数据写入数据库一次,然后我只需要读取数据库,不写入。
您能告诉我如何在构建过程中直接从 CSV 文件生成 sqlite3 数据库吗?