我正在开始一个新项目。任务基本上是将数据从文件移动到数据库。
假设每小时有一个数据文件,并且该文件的一行转换为数据库的一行。

技术细节:

  • 文件行(数据库中的条目):10k - 100k
  • 条目:10 x char[100]

  • 我的问题是更新过程。

    我想做的是:

    解决方案 1:
  • 保留实际数据表(original_table)
  • 将数据从文件移动到影子表 (copy_table)
  • 进程完成后:
  • 截断 original_table
  • 将数据从 copy_table 批量复制到 original_table

  • 解决方案 2:
  • original_table
  • 添加新记录
  • 删除所有带有旧时间戳的记录
  • 重组 original_table (shrink, reset index)

  • 问题:
  • 哪个方案更高效?
  • 有人对这个问题有更好的解决方案吗?
  • 我将如何在 C# 中完成解决方案 1 中的步骤 4/5 和解决方案 2 中的步骤 3(如果可能,使用 Entity Framework )?
  • 最佳答案

    解决方案 2 听起来确实更有效。解决方案 1 听起来不必要地迂回曲折。

    要完成解决方案 1 中的第 4 步和第 5 步或解决方案 2 中的第 3 步,只需将 EntityCommand.ExecuteNonQuery 与适当的 T-SQL 文本一起使用 - 例如TRUNCATE TABLE original_table

    关于c# - SQL Server : how would I do a truncate and copy in C#?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23064098/

    10-16 10:18