首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

help me, help me! 关于大数据COPY ,有哪位高手了解 bluk insert

2012-01-29 
help me, help me! 关于大数据COPY ,有谁了解 bluk insert我想从表A COPY 一部分数据到本身(表A) 由于使用

help me, help me! 关于大数据COPY ,有谁了解 bluk insert
我想从表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

[解决办法]
你可以试试sql2000的dts或sql2005的数据库复制
[解决办法]
要是sqlserver数据库的话,2.0里增加了大数据表的操作方法,可以试试。
[解决办法]
jf
[解决办法]
这是我们项目里用到的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();
}

热点排行