我如何在c#中实现这个计划,读取所有数据并写入另一个表
本文关键字:数据 读取 另一个 计划 实现 | 更新日期: 2023-09-27 18:07:01
我在SQL Server中有两个表:
- 表1
name
,family
,address
列 - 表2
name
、family
列
我的服务器属性是这样的:
- 内存:64 gb
- Intel 24 core xeon
表1可能有3000万,我想读取所有的数据,只插入名字和家庭从表1到表2。我正在使用Linq-to-SQL,但速度很慢,我如何在c#中快速实现该场景?谢谢。
您可以在服务器上执行以下查询:
INSERT INTO table2
SELECT Name, Family
FROM table1
这将复制所有记录从table1
到table2
直接在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();