【问题标题】:How to import CSV data to sqlite dynamically in iphone application如何在 iphone 应用程序中将 CSV 数据动态导入到 sqlite
【发布时间】:2012-04-21 06:13:59
【问题描述】:

我被困住了。 有没有可以将 CSV 记录直接导入 sqlite 表的功能? 任何帮助都将不胜感激。

【问题讨论】:

  • 您需要以编程方式完成此操作吗?还是只需要使用工具从任何 csv 文件导入数据库?如果您需要使用工具,我建议您使用 SQLITE manager AddON
  • 我需要以编程方式完成,因为我需要将数据从服务器同步到我的应用程序,并且服务器具有 CSV 文件中的数据,所以我必须以编程方式完成。
  • 看看下面的答案。您必须编写自己的逻辑。

标签: iphone sqlite


【解决方案1】:

这是一个粗略的代码。请根据您的要求进行一些更改。

-(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 发布]; //清理。
}
}
[路径1发布];
}
另请参阅以下问题的答案。创建您自己的自定义 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


我希望这会对你有所帮助。

【讨论】:

  • 对我来说,它与 @"\r" 一起使用:NSArray *messArr=[path1 componentsSeparatedByString:@"\r"];
【解决方案2】:

您可以使用

等方法读取 CSV 文件
NSData  *CSVdata = [NSData dataWithContentsOfFile:path];
NSString *CSVString = [CSVdata dataUsingEncoding:NSASCIIStringEncoding];

你需要从这个字符串中对数据进行分组,然后才能插入到数据库中

【讨论】:

  • UTF 编码不适用于 csv 文件提取器。 ASCI 编码工作正常。
【解决方案3】:

如果您要求以编程方式执行此操作,那么您将不得不为此编写自己的逻辑。 1)读取一行(如果它的标题行创建一个包含以下字段的表) 2) 将记录插入到您的表中,并将各种字段映射到特定表的列。

否则,如果您只对插入记录感兴趣,那么您可以使用 Mac 版的 SQLiteManager 工具或浏览器的 plugin 工具

您可以从以下屏幕截图中获取提示(使用 SQliteManger for Mac。打开数据库--> 文件-->导入-->其他)

【讨论】:

    【解决方案4】:
    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多