2012-09-25 143 views
4

我在SQLite中有一個數據庫,並且一個名爲xyz的表是空的。我想從一個CSV文件導入到該表中的數據。將csv文件導入到SQLite中

現在,當我嘗試導入csv文件時,它要求將其導入到主表中,但我想將數據導入到我的xyz表中。

我該怎麼做?

+0

[Import CSV to SQLite]的可能重複(https://stackoverflow.com/questions/14947916/import-csv-to-sqlite) –

回答

3

你可以做這樣一來,

首先,你需要添加你的csv文件捆綁。

然後,你可以調用這個方法,你想從CSV

-(void)loadCSVData{ 
NSString *path1=[[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"YOUR_CSV_FILENAME" ofType:@"csv"] usedEncoding:&encoding error:nil]; 
NSArray *messArr=[path1 componentsSeparatedByString:@"\n"]; 
if(messArr) 
{ 
for(int i=1;i<=[messArr count]-2;i++) 
    { 
NSMutableDictionary *d=[[NSMutableDictionary alloc] init]; 
NSString *StrValue=[NSString stringWithFormat:@"%@",[messArr objectAtIndex:i]]; 
StrValue=[StrValue stringByReplacingOccurrencesOfString:@"\"" withString:@""]; 
StrValue=[StrValue stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
// Here give whatever saperator you need to saperate data 
NSArray *arr=[StrValue componentsSeparatedByString:@","]; 

[d setValue:[arr objectAtIndex:0] forKey:@"YOUR_TABLE_FIELD_1"]; 
[d setValue:[arr objectAtIndex:1] forKey:@"YOUR_TABLE_FIELD_2"]; 
[d setValue:[arr objectAtIndex:2] forKey:@"YOUR_TABLE_FIELD_3"]; 

    //Here add logic to insert row in your database table 
} 
} 
+1

先生有沒有什麼方法throgh,我可以直接在sqlite管理器進行更改? –

+0

意思是說得不清楚,想編輯已經存在的條目,或者想手動將csv數據直接導入數據庫? – Nikunj

+0

你也可以直接在你的數據庫中導入csv文件,你可以用mozilla SQlite管理器中的插件檢查它,打開它比點擊數據庫=>導入。在這裏你可以選擇導入csv文件 – Nikunj

3

我用下面的代碼做了你只是需要impliment是: -

-(void)restore{ 
@try { 
     NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"%@%@?userid=%@",kHOSTPATH,kCSVLIST,[[cntrAppDelegate setServerDetails] valueForKey:@"kUSERID"]]]; 
NSMutableURLRequest *requestMutable = [[NSMutableURLRequest alloc] init]; 
[requestMutable setURL:url]; 
NSError *error = [[NSError alloc] init]; 
NSHTTPURLResponse *response = nil; 
NSData *urlData=[NSURLConnection sendSynchronousRequest:requestMutable returningResponse:&response error:&error]; 
NSLog(@"Response code: %d", [response statusCode]); 
if ([response statusCode] >=200 && [response statusCode] <300) 
{ 
    NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
    NSLog(@"Response ==> %@", responseData); 
    SBJsonParser *jsonParser = [SBJsonParser new]; 
    NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:responseData error:nil]; 
    NSLog(@"--------=========%@============-------------",jsonData); 
    NSDictionary *dic = [jsonData objectForKey:@"Root"]; 
    NSLog(@"---------------------ROOT VALUE IS %@",dic); 
    NSLog(@"----------------COUNT IS %d",[dic count]); 
    for (int i = 0; i < [dic count]; i++) 
    { 
     NSString *str = [[dic valueForKey:@"CSV_File"]objectAtIndex:i]; 
     NSLog(@"STR IS %@",str); 
     [self.arrListOfCSV addObject:str]; 
    } 
    if ([jsonData valueForKey:@"Root"] == 0) 
    { 

    } 
    else 
    { 
    } 
    } 
+0

先生有沒有什麼方法可以直接在sqlite管理器中進行更改? –

+0

如果你想從csv導入數據,你必須從csv獲得第一個數據,然後將這些數據存儲到sqlite插入詢問 –

0

在Linux的話,最好把數據導入數據庫中添加數據。而在磁盤操作系統後進入的SQLite,進入

separator","; 

進口choose your csv path XYZ。當您創建名爲xyz的表時,該名稱應與您的csv文件一致。