如何将SQLite表导入核心数据(SQLite)
我有一个大的XML。如果我通过一条记录将它写入数据库,大约2分钟。这个XML静态的,它永远不会更新。因此,创建SQLite数据库并在Core Data中导入一个表可能很有用?我怎样才能做到这一点?如何将SQLite表导入核心数据(SQLite)
我看到这个教程(Core Data on iOS 5 Tutorial: How To Preload and Import Existing Data),它并没有说如何导入表
从sqlite的进口是相当容易的,但没有记录足够恕我直言
- 打开你的应用程序,并成立了核心数据堆栈
- 打开您想从中导入东西的遗留SQL数据库
- 获取要导入的数据并遍历所有行。
- 为每一行创建一个新的NSManagedObject并将其插入到您正在使用的managedObject上下文中。设置它的值。使用FMDB
它会像:
NSManagedObjectContext *mom = ... ; //your mom
FMDatabase *db = [FMDatabase databaseWithPath:libraryDatabase];
if(![db open]) {
ddprintf(@"Failed to open database at %@", libraryDatabase);
return;
}
if(![db beginTransaction]) {
ddprintf(@"Failed to start Transaction to update database: %d, %@", db.lastErrorCode, db.lastErrorMessage);
[db close];
return;
}
id sql = @"SELECT modelId,imagePath,fileVolumeUuid FROM RKMaster";
FMResultSet *resultSet = [db executeQuery:sql];
while ([resultSet next]) {
//get row values
NSString *modelId = [row stringForColumn:@"modelId"];
NSString *orgFilename = [row stringForColumn:@"imagePath"];
//new MOC
MyEntity *entity = [mom insertNewObjectForEntity:@"myEntity"];
entity.modelId = modelId;
entity.orgFilename = orgFilename;
}
if(![db commit]) {
ddprintf(@"Failed to commit database transaction: %d,%@", [db lastErrorCode], [db lastErrorMessage]);
}
if(![db close]) {
ddprintf(@"Failed to propertly close database at %@", libraryDatabase);
}
。只是一个例子 – 2013-04-29 08:28:12
我可以导入整个表,而不是一行? – wiruzx 2013-04-29 09:23:22
不知道如何..你需要将行映射到mocs – 2013-04-29 09:31:25
你为什么要使用一个表?本教程提供的解决方案有什么问题? – Wain 2013-04-29 07:56:40
@Wain我已经有一个核心数据数据库,我需要导入唯一的一个表 – wiruzx 2013-04-29 08:00:00
因此,这就像您的用户已经添加了一些数据,您将发布一些额外的内容添加到用户现有的数据。是什么让你认为从SQLite导入会比从XML导入更快?你有没有分析XML导入?并且在后台线程(或两个)上运行XML导入? – Wain 2013-04-29 08:12:34