【问题标题】:Update an SQL database through .NET c# with only the changes通过 .NET c# 更新 SQL 数据库,仅进行更改
【发布时间】:2019-02-13 20:37:22
【问题描述】:

情况:第三方每天将一个 XML 文件放到一个位置,我的 windows 应用程序会在该位置提取它,从我的数据库中的表中删除数据并用新数据替换它。基本上,XML 代表整个数据,而不仅仅是变化。

问题:我不想每天都删除表格,而是想只用更新的数据或新数据来更新我的数据库,而不是遍历每一行并进行比较。 有没有办法在 C# 中做到这一点?

谢谢。

【问题讨论】:

  • 如果您不将新数据与现有数据进行比较,那么您将如何知道要更新什么?
  • 有很多方法可以做到这一点,所以简单的答案是肯定的。你能告诉我们你到目前为止所做的尝试吗? SO 不是代码编写服务,而是在这里帮助和支持问题。
  • 没错,这就是为什么我想知道是否有一种不那么麻烦的方法。
  • 对不起,我目前无权访问代码,但基本上我只是读取 XML,反序列化它,删除我的表并循环遍历我的 xml 对象并将每个条目添加到空表
  • 使用合并语句This会帮你

标签: c# sql


【解决方案1】:

您不必放下桌子。您还可以截断它,或从中删除所有行。

删除和截断是快速操作,但它们实际上会改变数据模型(DDL 语句)并且非常生硬。他们基本上会丢弃数据库中用于表的所有数据。

删除是一种 DML 操作(修改数据而不触及数据库结构)。它具有被交易的潜在好处,因此如果导入因任何原因失败,您可以回滚到以前的数据。但可能需要更长时间,因为数据库会记录所做的更改。

语句很简单:

truncate TableName;

delete * from TableName;

如果你真的想比较更改,你必须先查询数据,或者写一个更复杂的upsert statement,具体的解决方案可能会根据你使用的数据库而有所不同.我怀疑这是否会更快或更有效,我会选择截断或删除。

【讨论】:

  • 我将尝试使用 upsert 的解决方案,看看它会导致什么。谢谢
猜你喜欢
  • 2018-04-04
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
相关资源
最近更新 更多