2012-09-25 2 views
4

SQLite에 데이터베이스가 있고 xyz이라는 테이블이 비어 있습니다. CSV 파일에서 해당 테이블로 데이터를 가져 오려고합니다.SQLite에 csv 파일 가져 오기

이제 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

Sir은 sqlite 관리자에서 직접 변경할 수있는 방법이 있습니까? –

+0

명확하게 이해하지 못한다거나, 이미 존재하는 항목을 편집하고 싶거나 csv 데이터 지시를 수동으로 DB로 가져오고 싶습니까? – Nikunj

+0

당신은 직접 데이터베이스에서 csv 파일을 가져올 수도 있습니다. Mozilla SQlite 관리자에서 addons를 사용하여 확인할 수 있습니다. Tap on DataBase => Import를 누르십시오. 여기 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에서 첫 번째 데이터를 가져와야합니다. 그런 다음 u를 삽입하여이 데이터를 sqlite에 저장하십시오. –

0

리눅스에서 당신이해야 더 나은 데이터 가져 오기에서 데이터베이스에 데이터를 추가하려면이 메서드를 호출 할 수 있습니다. SQLite에 들어가면 디스크 조작 시스템에서

separator","; 

임포트 choose your csv path xyz를 입력하십시오. xyz이라는 테이블을 만들 때 이름은 csv 파일과 일치해야합니다.