【发布时间】:2014-09-20 15:38:08
【问题描述】:
我尝试找到以下理论问题的解决方案,但不能 - 抱歉,如果之前被问到,感谢您的链接。
我有一个客户每 60 秒向我发送一个包含更改数据的 csv 文件。我需要读取文件并在相应的数据库表中插入/更新/删除条目。
目前我按感兴趣的日期过滤我的数据库表和 CSV 文件,然后我遵循一个两步过程。
1.浏览数据库中的所有记录并检查 CSV 文件中是否有匹配的记录:
1.1 如果 CSV 文件中没有匹配的记录,那么我必须从数据库中删除记录。
1.2 如果有匹配记录,我必须检查所有字段并在需要时更新记录。
1.3 如果有多个匹配记录,我会删除数据库中的所有匹配记录。
2。浏览 CSV 文件中的所有记录并检查数据库中是否有匹配的记录:
2.1 如果没有匹配的记录,我在数据库中创建一个新条目。
2.2 - 已在 1.2 中处理 - 我什么都不做。
2.3 如果 CSV 文件中有多个匹配记录,我会联系客户,因为他的 CSV 已损坏。
我不是专业的开发人员,但我觉得这个过程不仅仅是乏味的 - CSV 文件可能包含 2000-5000 条记录,每个记录有 25 个数据字段。为了提高性能,每个步骤都使用任务并行库完成。
有没有更简单的方法可以根据 CSV 文件更新我的数据库? 不知何故,Venn Diagramms 突然出现在我的脑海中 - 基本上这是我已经在做的事情,但是 LINQ 或 ADO 库中是否有一些内置功能?
我正在使用 ADO 数据集和 LINQ 来读取和处理 CSV 文件和 DB 数据。
感谢您的想法,欢迎您的帮助。 问候,
艾俄洛斯
【问题讨论】:
-
是的,维恩图是一个很好的调用——这表明您应该使用数据库来完成这项工作,因为它是围绕基于集合的逻辑构建的。我会尝试使用 SqlBulkCopy 将 CSV 加载到数据库中的单独工作表中,然后调用存储过程来执行连接以插入、更新、删除实际表中的数据。 DataSet 和 LINQ 非常适合处理代码中的单个或一小组对象,但实际上不适合像这样的批量操作。
-
您可以使用 SQL Server 集成服务来自动化整个过程。 technet.microsoft.com/en-us/library/ms141026.aspx
-
感谢您的建议 - 我将首先查看 SQL Server Integration Services,然后再查看 SQLBulkCopy
标签: c# sql-server crud