我想从表A COPY 一部分数据到本身(表A) 由于使用insert select 这样的方法效率太低, 
考虑使bluk insert ,但不知道bluk insert 表对表如何copy? 
从网上和帮助中查资料都是 文件到表copy的例子。 
.net里面有bluk copy方法使用bluk insert,但我通过sql profiler 跟踪出的SQL无法运行. 
很急,请高手帮忙!!!!原贴  http://topic.csdn.net/u/20071021/23/52570daf-3d59-4eff-96e9-080e614ade4a.html

解决方案 »

  1.   

    你可以试试sql2000的dts或sql2005的数据库复制
      

  2.   

    要是sqlserver数据库的话,2.0里增加了大数据表的操作方法,可以试试。
      

  3.   

    .NET 2.0 的SqlBulkCopy()方法。我用sql profiler 跟踪出的SQL,运行无法插入数据这是怎么回事?
      

  4.   

    这是我们项目里用到的SqlBulkCopy,截取一部分帮助你理解SqlBulkCopy的用法/*******************调用SqlBulkCopy实现DataTable到SQL的批量拷贝******************/
                if (SqlConn.State == ConnectionState.Closed)
                {
                    SqlConn.Open();
                }            //定义SQL事务并嵌入到批量拷贝的工作中
                SqlTransaction objSqlTran = SqlConn.BeginTransaction();            //定义SqlBulkCopy:SqlConn为SqlConnection,SqlBulkCopyOptions枚举类型,objSqlTran为调用的事务
                SqlBulkCopy objSqlCopy = new SqlBulkCopy(SqlConn, SqlBulkCopyOptions.KeepIdentity, objSqlTran);            //分批次拷贝的行数
                objSqlCopy.BatchSize = 10;
                objSqlCopy.BulkCopyTimeout = 240;
                //目标表名
                objSqlCopy.DestinationTableName = "DetailAccountReport";            //源表对目标表字段的映射,因为默认是按顺序以及名字匹配,所以这步很重要
                objSqlCopy.ColumnMappings.Add("ProjectDefID", "ProjectDefID");
                objSqlCopy.ColumnMappings.Add("PrjName", "PrjName");
                objSqlCopy.ColumnMappings.Add("MaterialCodeDef", "MaterialCodeDef");
                objSqlCopy.ColumnMappings.Add("MaterialCode", "MaterialCode");
                objSqlCopy.ColumnMappings.Add("MaterialName", "MaterialName");
                objSqlCopy.ColumnMappings.Add("Spec", "Spec");
                objSqlCopy.ColumnMappings.Add("UnitName", "UnitName");
                objSqlCopy.ColumnMappings.Add("CreateDate", "CreateDate");
                objSqlCopy.ColumnMappings.Add("BillTypeID", "BillTypeID");
                objSqlCopy.ColumnMappings.Add("BillNum", "BillNum");
                objSqlCopy.ColumnMappings.Add("BillID", "BillID");
                objSqlCopy.ColumnMappings.Add("BillName", "BillName");
                objSqlCopy.ColumnMappings.Add("AcceptNum", "AcceptNum");
                objSqlCopy.ColumnMappings.Add("AcceptUnitPrice", "AcceptUnitPrice");
                objSqlCopy.ColumnMappings.Add("AcceptMoney", "AcceptMoney");
                objSqlCopy.ColumnMappings.Add("SellNum", "SellNum");
                objSqlCopy.ColumnMappings.Add("SellUnitPrice", "SellUnitPrice");
                objSqlCopy.ColumnMappings.Add("SellMoney", "SellMoney");
                objSqlCopy.ColumnMappings.Add("Num", "SumNum");
                objSqlCopy.ColumnMappings.Add("Money", "SumMoney");
                objSqlCopy.ColumnMappings.Add("Explain", "Explain");            try
                {
                    //将DataTabel类型的objDT作为源拷贝到目标表
                    objSqlCopy.WriteToServer(objDT);
                    objSqlTran.Commit();
                }
                catch
                {
                    objSqlTran.Rollback();
                }
                finally
                {
                    objSqlCopy.Close();
                    SqlConn.Close();
                }