大きすぎない 2 MB のファイルがあり、それを検索できるように sqlite データベースに入れたいと考えています。CSV 形式のエントリは約 30K あり、1 行に 6 つのフィールドがあります。私の理解では、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 に変換して Dictionary にロードする必要がありますか? 残念ながら、2 つのフィールドを検索する必要がありますが、Dictionary は 1 つのキーしか持てないと思いますか?
ルイス、あなたの応答に感謝します。
アプリの開始時に 1 回だけデータベースにデータを書き込みたいと述べたはずです。その後、データベースの読み取りのみを行う必要があり、書き込みは必要ありません。
ビルド プロセスの一環として、CSV ファイルから直接 sqlite3 データベースを生成する方法を教えてください。