2012-04-21 11 views
1

私は立ち往生しています。 CSVレコードを直接sqliteテーブルにインポートできる関数はありますか? 何か助けになるでしょう。iphoneアプリケーションでCSVデータを動的にsqliteにインポートするには

+0

これはプログラムで行う必要がありますか?またはツールを使用して任意のcsvファイルからDBにインポートするだけですか?ツールを使用する必要がある場合は、SQLiteマネージャーアドオンを使用することをお勧めします。 –

+0

プログラムから行う必要があるので、サーバーからアプリケーションとサーバーにCSVファイルのデータを同期する必要があるため、 – Kuldeep

+0

以下の回答を見てください。あなたは自分のロジックを書く必要があります。 –

答えて

2

に挿入することができ

NSData *CSVdata = [NSData dataWithContentsOfFile:path]; 
NSString *CSVString = [CSVdata dataUsingEncoding:NSASCIIStringEncoding]; 

のようなメソッドを使用してCSVファイルを読み込むことができますがそれを行うためのラフなコードです。あなたの要件に応じていくつかの変更を行ってください。

-(void)loadCSVData{ 
   
       NSStringEncoding encoding;    NSString *path1=[[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:filename ofType:@"csv"]  usedEncoding:&encoding error:nil]; //You will get the array of lines    NSArray *messArr=[path1 componentsSeparatedByString:@"\n"];

//Now start to process each single line.    if(messArr)    {        for(int i=0;i<=[messArr count]-1;i++)        {                        NSMutableDictionary *d=[[NSMutableDictionary alloc] init];            NSString *StrValue=[NSString stringWithFormat:@"%@",[messArr objectAtIndex:i]];            StrValue=[StrValue stringByReplacingOccurrencesOfString:@"\"" withString:@""];            StrValue=[StrValue stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];            NSArray *arr=[StrValue componentsSeparatedByString:@","];

/*Add value for each column into dictionary*/

[d setValue:[arr objectAtIndex:0] forKey:@ "columnName"]; //この辞書 "d"をデータベースに追加します
[dリリース]; //掃除。
}
}
[path1 release];
}

次の質問の回答も参照してください。独自のカスタムCSVパーサーを作成するには良い説明があります。

Load data from csv file (iphone SDk) [How to import CSV data to sqlite dynamically in iphone application


[2]:How to import CSV data to sqlite dynamically in iphone application


私は、この意志はあなたを助け願っています。

+0

素晴らしい!うまく動作します。私は自分の要件に応じて少し変更を加えました。 – Kuldeep

+0

私のために、それは@ "\ r"で動作しました:NSArray * messArr = [path1 componentsSeparatedByString:@ "\ r"]; – Yossi

1

あなたは、この文字列からデータをグループ化する必要があり、その後、ここでDB

+0

UTFエンコードがCSVファイルエクストラクタでうまく動作しません。 ASCIエンコーディングは正常に動作します。 – Kuldeep

0

これをプログラマチックに行うように求めているのであれば、あなた自身のロジックを書く必要があります。 1)行を読み込みます(ヘッダー行が次のフィールドを持つテーブルを作成する場合) 2)テーブルに、特定のテーブルの列にマップされたさまざまなフィールドを持つレコードを挿入します。

エルス

あなたがレコードを挿入にのみ関心がある場合はとにかく、あなたはあなたがMac用SQliteMangerを使用した(のscreengrabを次の中からヒントを取ることができ、ブラウザ

のMACまたはそのpluginためSQLiteManagerツールを使用することができます。オープンDatabase-- >ファイル - >インポート - >その他)

enter image description here