1

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

4

4 回答 4

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"];             //Add this dictionary "d" into database
[d release]; //Cleanup.
       }
   }
[path1 release];    
}

另请参阅以下问题的答案。创建自己的自定义 CSV 解析器有一个很好的解释。

从 csv 文件加载数据(iphone SDk) [如何在 iphone 应用程序中动态将 CSV 数据导入 sqlite


[2]:如何在iphone应用程序中动态导入CSV数据到sqlite


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

于 2012-04-21T06:34:17.327 回答
1

您可以使用以下方法读取 CSV 文件

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

您需要将此字符串中的数据分组,然后可以插入到数据库中

于 2012-04-21T06:22:45.040 回答
0

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

否则,如果您只对插入记录感兴趣,那么您可以使用适用于 mac 的SQLiteManager工具或其浏览器插件

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

在此处输入图像描述

于 2012-04-21T06:34:24.197 回答
-1

阅读这篇文章..Imort csv 到 sqllite

给你的第二个参考

希望对你有帮助

于 2012-04-21T07:09:33.650 回答