【问题标题】:CRUD code logic against SQL Server DB针对 SQL Server DB 的 CRUD 代码逻辑
【发布时间】: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


【解决方案1】:

对我来说,这看起来是一个非常简单的过程。

  1. 删除数据库中的所有条目

  2. 解析 CSV。对于每个条目:

    2.1。如果不在数据库中:创建新记录

    2.2。否则:删除数据库中的记录并通知客户

据我所知,上述操作顺序涵盖了您的所有逻辑。

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多