我有一个应用程序,用户可以保存客户的位置逐一。但如果客户有多个位置,则逐个输入将花费大量时间。所以我需要一个机制,用户可以做一个大容量导入,这意味着他们可以保存在csv或excel文件中的所有位置,所有我需要做的是逐个读取所有行,并将其保存到数据库,而不需要保存实际文件或上传文件到服务器。
我正在寻找一个解决方案,我可以读取csv文件在内存中,通常文件大小将小于5MB。
目前,当我在自己的机器上这样做时,它可以工作(因为我已经对文件路径进行了硬编码),但是当服务器和客户端在不同的机器上时,它不能工作。
这是我用来解析csv的代码
try
{
using (TextFieldParser parser = new TextFieldParser(@"C:\Users\temp\docs\Location.csv"))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
parser.ReadLine();
var row= new ImportLocationModel();
while (!parser.EndOfData)
{
row=ImportLocationModel.FromFields(parser.ReadFields();
clientFindProviderApi.InsertUpdateCustomerListLocation1(list); // saving location in database.
}
return true;
}
}
发布于 2018-04-16 19:34:43
在不上传数据的情况下将数据上传到服务器是不可能的。您也许可以避免将数据存储在磁盘上。只需将其缓存在MemoryStream中,然后将像所有其他未使用的托管内存一样被收集。
然而,目前还不清楚这是否是你真正需要/想要的。这听起来更像是您需要/应该使用分布式数据库。一旦你在客户端有了一个镜像/缓存数据库,将它与服务器上的Master同步(反之亦然)就变成了一件DMBS的事情。
您不应该对文件大小有任何疑问。“防呆系统的开发者低估了笨蛋的聪明才智。”例如,某些用户将创建要以100 MiB大小同步的文件/数据。另外,假设你的客户可能是一部手机,当时的互联网连接非常糟糕。因此,您应该以某种方式将同步移动到异步任务。
https://stackoverflow.com/questions/49864766
复制相似问题