我在SQL Server中有两个表:
name
,family
,address
name
,family
我的服务器属性是这样的:
我表1可能有3000万,我想读取所有数据,只需要从表1到表2插入名称和系列。我正在使用Linq-to-SQL,但这很慢,如何我可以在C#中快速实现该场景吗?感谢。
答案 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();