SQL Server:如何在C#中执行截断和复制?

SQL Server:如何在C#中执行截断和复制?,c#,sql-server,entity-framework,truncate,bulk,C#,Sql Server,Entity Framework,Truncate,Bulk,我要开始一个新项目。任务基本上是将数据从文件移动到数据库。 假设每小时有一个数据文件,一行文件转换成一行数据库 技术细节: 文件行(以DB为单位):10k-100k 条目:10个字符[100] 我的问题是更新过程 我想做的是: 解决方案1: 保留tact中的实际数据表(原始表) 将数据从文件移动到阴影表(复制表) 完成该过程后: 截断原始表格 将数据从copy_table大容量复制到original_table 解决方案2: 将新记录添加到原始\u表中 删除带有旧时间戳的所有记录 重新组织原

我要开始一个新项目。任务基本上是将数据从文件移动到数据库。 假设每小时有一个数据文件,一行文件转换成一行数据库

技术细节:

  • 文件行(以DB为单位):10k-100k
  • 条目:10个字符[100]
我的问题是更新过程

我想做的是:

解决方案1:

  • 保留tact中的实际数据表(原始表)
  • 将数据从文件移动到阴影表(复制表)
  • 完成该过程后:
  • 截断原始表格
  • 将数据从
    copy_table
    大容量复制到
    original_table
  • 解决方案2:

  • 将新记录添加到
    原始\u表中
  • 删除带有旧时间戳的所有记录
  • 重新组织原始表格(收缩、重置索引)
  • 问题:

  • 哪种解决方案更有效
  • 有没有人能更好地解决这个问题
  • 我如何在C#中完成解决方案1的步骤4/5和解决方案2的步骤3(如果可能,使用实体框架)

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

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

    如何

  • 截断原始表
  • 将新记录添加到原始表中

  • 都打包在一个事务中?这样,如果复制失败,将回滚截断,并且不会丢失原始表。没有数据洗牌。

    解决方案1:错误。它存在无法访问表的计时问题,这意味着其他程序必须处理此问题

    解决方案2:相同

    那么:

    3:将新数据加载到临时表中,然后将其合并到原始表中