如何在c#中实现此计划以读取所有数据并编写另一个表?

时间:2015-08-08 04:04:38

标签: c# sql-server

我在SQL Server中有两个表:

  • 表1列namefamilyaddress
  • 表2列namefamily

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

  • RAM:64GB
  • Intel 24核心xeon

我表1可能有3000万,我想读取所有数据,只需要从表1到表2插入名称和系列。我正在使用Linq-to-SQL,但这很慢,如何我可以在C#中快速实现该场景吗?感谢。

2 个答案:

答案 0 :(得分:3)

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

 INSERT INTO table2
 SELECT Name, Family
   FROM table1

这将直接在SQL Server上将table1中的所有记录复制到table2

当然,如果您必须从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类,但它需要做更多的工作来设置操作。

答案 1 :(得分:0)

您可以使用以下代码:

         // 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();