Да, есть способ:
DataTable dataTable = null; // your data needs to be here
try
{
ConnectionStringSettings mConString = ConfigurationManager.ConnectionStrings["SiteSqlServer"];
// Optional truncating old table
using (SqlConnection connection = new SqlConnection(mConString.ConnectionString))
{
connection.Open();
// Delete old entries
SqlCommand truncate = new SqlCommand("TRUNCATE TABLE MYTABLE", connection);
truncate.ExecuteNonQuery();
}
SqlBulkCopy bulkCopy = new SqlBulkCopy(mConString.ConnectionString, SqlBulkCopyOptions.TableLock)
{
DestinationTableName = "dbo.MYTABLE",
BatchSize = 100000,
BulkCopyTimeout = 360
};
bulkCopy.WriteToServer(dataTable);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
Пожалуйста, поэкспериментируйте с BatchSize - 100000 было для меня хорошо - оно не должно быть больше этого - в противном случае скорость миграции уменьшается.BatchSize не ограничивает ваши данные - это просто размер каждого «пакета», который будет отправлен на сервер sql.
SiteSQLServer должен находиться внутри вашего app.config или web.config.Вам нужно изменить параметры здесь, если нет.
Пожалуйста, измените MYTABLE на ваше имя таблицы.