импортировать CSV в Coredata SQLite для iPhone - PullRequest
2 голосов
/ 31 января 2011

как я могу импортировать CSV в SQLite (основные данные для iphopne)

Я пытался использовать диспетчер SQLite, но он импортирует CSV в новую таблицу, также мне нужно импортировать некоторые даты,

  • так как импортировать данные в мою базу данных sqlite? У меня есть 3 сущности с разными свойствами, и в CSV у меня есть все значения в одном CSV (чтобы я мог отформатировать или изменить его по мере необходимости), но как импортировать его?

  • и какой формат даты нравится coredata?

спасибо заранее!

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Я предполагаю, что вы настроили CoreData, и он работает нормально. Вы действительно не хотите работать напрямую с базой данных sqlite core-data. Это возможно, но также немного грязно.

  • Используйте один из сканеров CSV, плавающих вокруг, чтобы прочитать ваши данные CSV в поля.
  • Сопоставьте поля CSV с вашими сущностями и их атрибутами по мере необходимости. Возможно, вы захотите использовать CSV-заголовок, чтобы убедиться, что ваш CSV-столбец-атрибут в порядке.
  • Перебирайте строки в CSV и обновляйте свои объекты построчно.
  • В зависимости от объема данных вы можете регулярно сохранять контекст.

Core-Data любит NSDate. Что бы файл CSV не использовал в столбце данных, лучше всего преобразовать значение CSV в NSDate. Использование NSDate в вашем приложении уменьшит количество головных болей позже.

0 голосов
/ 31 января 2011

Я бы предложил сначала создать базу данных sqlite внутри приложения с использованием Core Data, а затем использовать базу данных, созданную Core, для импорта данных CSV.

вы можете использовать команды командной строки для импорта данных в файл sqlite.

Добавьте файл sqlite в проект.

замените и добавьте этот код в метод persistentStoreCoordinator.

NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"yourDatabase.sqlite"];
/*
 Set up the store.
 For the sake of illustration, provide a pre-populated default store.
 */
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn’t exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
    NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"yourDatabase" ofType:@"sqlite"];
    if (defaultStorePath) {
        [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
    }
}

Изменить метод

- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...