2011-01-31 109 views
2

如何導入CSV到源碼(對於iphopne核心數據)導入CSV到coredata SQLite,讓iphone

我已經使用SQLite經理試過,但它導入CSV文件中的新表,我也需要進口一些日期,

  • 那麼如何將數據導入到我的sqlite數據庫?我有3個具有不同屬性的實體,並且在csv中我有一個csv中的所有值(所以我可以根據需要對其進行格式化或更改),但是如何重新定義它?

  • 什麼是coredata喜歡的日期格式?

在此先感謝!

回答

3

我假設你有設置您的CoreData和一個運行良好。你並不想直接使用核心數據的sqlite數據庫。這是可能的,但也有點混亂。

  • 使用其中一個浮動的CSV掃描器將CSV數據讀入字段。
  • 根據需要將CSV字段映射到您的實體及其屬性。 您可能想要使用CSV標頭驗證您的映射CSV列到屬性是否正常。
  • 循環遍歷CSV行並逐行更新您的實體。
  • 根據數據量,您可能需要定期保存上下文。

核心數據喜歡NSDate。無論CSV文件在數據列中使用什麼,您最好將CSV值轉換爲NSDate。在您的應用程序中使用NSDate將減少以後的頭痛事件的數量。

0

我會建議,首先在應用程序中使用Core Data創建sqlite數據庫,然後使用由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]; 
}