SQLServer2005 バルクコピー
メモ。
でかいサイズのデータを高速コピー。
http://msdn2.microsoft.com/ja-jp/library/7ek5da1a(VS.80).aspx
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Transactions; using System.Data.Sql; using System.Data.SqlClient; namespace BulkCopy { class Program { static void Main(string[] args) { //Exec_Datatable(); Exec_Datareader(); } static void Exec_Datareader() { var con = new SqlConnection(@"Data Source=xxx\sqlexpress;Initial Catalog=LockTest;Integrated Security=True"); con.Open(); var cmd = new SqlCommand("select * from tb2", con); var dr = cmd.ExecuteReader(); var sbc = new SqlBulkCopy("Data Source=xxx;Initial Catalog=Test;Integrated Security=True"); sbc.DestinationTableName = "tb0"; sbc.ColumnMappings.Add( new SqlBulkCopyColumnMapping( "cd_", "cd")); sbc.ColumnMappings.Add( new SqlBulkCopyColumnMapping( "data1_", "data1")); sbc.ColumnMappings.Add( new SqlBulkCopyColumnMapping( "data2_", "data2")); sbc.WriteToServer(dr); } static void Exec_Datatable() { using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { var da = new LocktestTableAdapters.tb2TableAdapter(); var dt = da.GetData(); var sbc = new SqlBulkCopy("Data Source=xxx;Initial Catalog=Test;Integrated Security=True"); sbc.DestinationTableName = "tb0"; sbc.ColumnMappings.Add( new SqlBulkCopyColumnMapping( "cd_", "cd")); sbc.ColumnMappings.Add( new SqlBulkCopyColumnMapping( "data1_", "data1")); sbc.ColumnMappings.Add( new SqlBulkCopyColumnMapping( "data2_", "data2")); sbc.WriteToServer(dt); scope.Complete(); } } } }