Sql server 数据表优化保存到sql数据库

Sql server 数据表优化保存到sql数据库,sql-server,ado.net,Sql Server,Ado.net,我在SQLServerDB表中有结构相同的DataTable。 要将此数据表中的数据保存到Sql DB,我使用以下代码: sqlCommand mcd; for(int i=0;i<dataTable.Rows.Count;i++) { mcd=new SqlCommand(); cmd.CommandText="Insert into MSSQLtable values("+dataTable.Rows[i][0]+dataTable.Rows[i][1]+")"; cmd.Execu

我在SQLServerDB表中有结构相同的
DataTable
。 要将此数据表中的数据保存到Sql DB,我使用以下代码:

sqlCommand mcd;

for(int i=0;i<dataTable.Rows.Count;i++)
{
mcd=new SqlCommand();
cmd.CommandText="Insert into MSSQLtable values("+dataTable.Rows[i][0]+dataTable.Rows[i][1]+")";
cmd.ExecuteNonQuery();

}
sqlCommand-mcd;

对于(inti=0;i还有其他几种方法,请查看关于从.NET向SQL Server高性能批量加载的博客文章

总之,您可以使用SqlDataAdapter执行批插入(或更新),或者为了获得更好的性能,您可以使用SQLBulkCopy(仅限插入)。这里演示的SqlDataAdapter方法需要约25秒才能将100000条记录插入数据库,而SQLBulkCopy需要约0.8秒


每种方法都有优点/缺点-例如,如果您想很好地处理错误,并在特定行发生错误时继续,SqlDataAdapter非常方便。

是否可以从不同的数据库(例如,Oracle、VisualFoxPro)初始化数据然后使用SqlBulkCopy方法保存到Sql Server?@loviji-是的。您所需要做的就是将数据从另一个源加载到可以传递给SqlBulkCopy的内容中(例如,可以是数组或数据行、数据表或实现IDataReader的任何内容)。