我被困住了。有没有可以将 CSV 记录直接导入 sqlite 表的功能?任何帮助都将是可观的。
4 回答
这是一个粗略的代码。请根据您的要求进行一些更改。
-(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
我希望这会对你有所帮助。
您可以使用以下方法读取 CSV 文件
NSData *CSVdata = [NSData dataWithContentsOfFile:path];
NSString *CSVString = [CSVdata dataUsingEncoding:NSASCIIStringEncoding];
您需要将此字符串中的数据分组,然后可以插入到数据库中
如果您要求以编程方式执行此操作,那么您将不得不为此编写自己的逻辑。1)读取一行(如果它的标题行创建一个包含以下字段的表) 2)将记录插入到您的表中,并将各种字段映射到特定表的列。
否则,如果您只对插入记录感兴趣,那么您可以使用适用于 mac 的SQLiteManager工具或其浏览器插件
您可以从以下屏幕抓取中获取提示(使用 SQliteManger for Mac。打开数据库--> 文件--> 导入--> 其他)