私はそれを検索できるように、私はsqliteデータベースに入れたいと思う大きすぎない2 MBのファイルを持っています。 CSV形式のエントリは約30,000件あり、1行に6つのフィールドがあります。私の理解は、iPhone上のsqliteがこのサイズのデータベースを扱うことができるということです。大きなファイルをObjective-CのiPhoneのsqliteテーブルに読み込みます
私はいくつかのアプローチを取ってきましたが、すべてが30秒を超えていませんでした。私は試しました:
1)Cコードを使ってファイルを読み込み、フィールドを配列に解析します。
2)ファイルを解析し、SQLiteのデータベースに直接にそれを置くために、次のObjective-Cのコードを使用する:
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に変換して辞書にロードする必要がありますか?残念ながら、2つのフィールドを検索する必要があります。辞書には1つのキーしかないと思いますか?
ルイ、ご返信ありがとうございます。
私は、アプリケーションの開始時に一度だけデータをデータベースに書き込んでおき、後でデータベースの読み込みを行う必要があると書いています。
ビルドプロセスの一環としてCSVファイルから直接sqlite3データベースを生成する方法を教えてください。
ファイルをダンプしたくありません。これは、データベース自体を作成するのではなく、データベースを再作成するために使用できる一連の一連のSQL文を提供します。単にパスsqlite3を実行すると、 "sqlite3/path/to/my/db"というdbファイルが作成されます。そのファイルが人間が読めるものであれば、それはあなたが望むものではありません。 –
ルイ、「sqlite3のパスを実行する」というコマンドを教えてもらえますか?おかげさまで –
あなたが何かを意味してください: %sqlite3のnewdatabase.sqlite