2012-04-21 3 views
1

Я застрял. Есть ли какая-либо функция, которая может импортировать записи CSV непосредственно в таблицу sqlite? Любая помощь будет заметна.Как импортировать данные CSV в sqlite динамически в приложении iphone

+0

Вам нужно это сделать программно? или просто нужно импортировать в БД из любого csv-файла с помощью инструментов? Если вам нужно использовать инструмент, я предлагаю вам использовать диспетчер SQLITE Addon –

+0

Мне нужно сделать это программно, так как мне нужно синхронизировать данные с сервера на мое приложение и сервер, имеющие данные в файлах CSV, поэтому я должен делать это программно. – Kuldeep

+0

Посмотрите на ответы ниже. Вы должны написать свою собственную логику. –

ответ

2

Вот примерный код, чтобы сделать это. Просьба внести некоторые изменения в соответствии с вашим требованием.

-(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 release]; // Очистка.
}
}
[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

Вы можете прочитать CSV файл, используя методы, как

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

Вы должны группировать данные из этой строки, а затем может быть вставлена ​​в БД

+0

Кодировка UTF не работает для exctractor csv. Кодировка ASCI работает нормально. – Kuldeep

0

Если вы просите сделать это программно, тогда вам придется написать свою собственную логику, а именно: 1) Прочитайте строку (если ее строка заголовка создает таблицу со следующими полями) 2) Вставьте записи в таблицу с различными полями, отображаемыми в столбцы конкретной таблицы.

Иначе, если вы заинтересованы только в вставке записей, так или иначе, то вы можете использовать SQLiteManager инструмент для макинтоша или его plugin для вашего браузера

Вы можете взять намекаете из следующих Screengrab (Использование SQliteManger для Mac. Открыть Database-- > Файл -> Импорт -> другой)

enter image description here

Смежные вопросы