Один из способов сделать это - просто выполнить обычный запрос, используя INTO в SQL:
SELECT *
INTO NewTableName
FROM ExistingTableName
Это автоматически создает новую таблицу и вставляет строки старой.
Другой способ - использовать SqlBulkCopy из пространства имен System.Data.SqlClient
. Есть хорошая статья CodeProject, объясняющая, как это сделать:
Массовое копирование SQL с C # .Net
Программистам обычно нужно переводить
производственные данные для тестирования или
анализирующая. Самый простой способ скопировать
много данных из любых ресурсов в SQL
Сервер является BulkCopying. .NET Framework
2.0 содержит класс в пространстве имен ADO.NET "System.Data.SqlClient":
SqlBulkCopy. Операция массового копирования
обычно имеет две отдельные фазы.
На первом этапе вы получаете источник
данные. Источником могут быть различные данные
платформы, такие как Access, Excel, SQL.
Вы должны получить исходные данные в своем
код, оборачивающий его в DataTable, или
любой класс DataReader, который реализует
IDataReader. После этого во втором
фаза, вы должны подключить целевой SQL
База данных и выполнить массовое копирование
работа.
Операция массового копирования в .Net является
очень быстрый способ скопировать большое количество
данные где-то в SQL Server.
Причиной этого является Bulkcopy Sql
Серверный механизм. Вставка всех данных
строка за строкой, один за другим является
очень время и системные ресурсы
потребляя. Но механизм массового копирования
обрабатывать все данные одновременно. Итак, данные
вставка становится очень быстрой.
Код довольно прост:
// Establishing connection
SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder();
cb.DataSource = "SQLProduction";
cb.InitialCatalog = "Sales";
cb.IntegratedSecurity = true;
SqlConnection cnn = new SqlConnection(cb.ConnectionString);
// Getting source data
SqlCommand cmd = new SqlCommand("SELECT * FROM PendingOrders",cnn);
cnn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
// Initializing an SqlBulkCopy object
SqlBulkCopy sbc = new SqlBulkCopy("server=.;database=ProductionTest;" +
"Integrated Security=SSPI");
// Copying data to destination
sbc.DestinationTableName = "Temp";
sbc.WriteToServer(rdr);
// Closing connection and the others
sbc.Close();
rdr.Close();
cnn.Close();