我如何在c#中实现这个计划,读取所有数据并写入另一个表

本文关键字:数据 读取 另一个 计划 实现 | 更新日期: 2023-09-27 18:07:01

我在SQL Server中有两个表:

  • 表1 name, family, address
  • 表2 namefamily

我的服务器属性是这样的:

  • 内存:64 gb
  • Intel 24 core xeon

表1可能有3000万,我想读取所有的数据,只插入名字和家庭从表1到表2。我正在使用Linq-to-SQL,但速度很慢,我如何在c#中快速实现该场景?谢谢。

我如何在c#中实现这个计划,读取所有数据并写入另一个表

您可以在服务器上执行以下查询:

 INSERT INTO table2
 SELECT Name, Family
   FROM table1

这将复制所有记录从table1table2直接在SQL Server上。

当然,如果您必须在c#中执行,您可以使用SQLCommand执行相同的查询。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    String query = @"INSERT INTO table2
                       SELECT Name, Family
                         FROM table1";
    SqlCommand command = new SqlCommand(query, connection);
    command.Connection.Open();
    command.ExecuteNonQuery();
}

如果你需要在c#中对数据进行一些处理,一个好的选择是使用SqlBulkCopy类,但它将需要更多的工作来设置操作。

可以使用以下代码:

         // db = DataContext
         var toInsert = from t1 in db.Table1
           where ...
           select new Table2
           {
               name = b.name,
               family = b.family
           };
        db.Table2.InsertAllOnSubmit(toInsert);
        db.SubmitChanges();