我正在使用c#启动asp.net visual studio 2008/SQL 2000(将来的2005)项目.
对我来说棘手的部分是现有的数据库模式经常更改,导入文件列都必须与现有的数据库模式匹配,因为它们可能不是列名称上的一对一匹配.(有一个查找表,它提供了我将使用的列名称的表模式)
我正在探索不同的方法来解决这个问题,需要一些专家建议.是否有任何现有的控件或框架可用于执行此操作?
到目前为止,我探索了FileUpload .NET控件,以及一些第三方上传控件来完成上传,如SlickUpload,但上传的文件应<500mb
下一部分是读取我的csv/excel并解析它以显示给用户,以便它们可以与我们的db模式匹配.我看过CSVReader和其他人,但是因为我需要支持不同的版本,所以更难以实现.
实质上执行此导入的用户将从此导入文件中插入和/或更新多个表.还有其他更先进的要求,如记录匹配,但预览导入记录,但我希望首先了解如何执行此操作.
更新:我最终使用csvReader和LumenWorks.Framework上传csv文件.
查看优秀的FileHelpers库 - 有一篇关于它的CodeProject文章,它在这里托管.
它是纯粹的C#,它可以导入任何平面文件,CSV,它也可以处理Excel.导入是完全可配置的 - 您可以定义要跳过的分隔符,行和/或列等内容 - 许多选项.
我已成功地在各种项目中使用它,它只是完美无缺 - 非常值得推荐.
您可以轻松地在Excel或CSV文件上创建IDataReader(请参阅http://support.microsoft.com/kb/316934).
您使用SQL Server作为数据库引擎吗?如果是这样,您可以使用SqlBulkCopy类(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx)有效地获取IDataReader,根据需要映射列,并存储结果在您的数据库中.