前几天,在公司做了一个从Symix ERP系统后台PROGRESS数据库将数据导入到SqlServer2000数据库中,每10钟执行数据更新。同时解决了大批量数据导入的工作。
我利用的是.net2.0中System.Data.SqlClient.SqlBulkCopy类,这个类非常好,以下是数据业务类中的一个方法:
void BatchDataCopy(string SqlConn, string OdbcConn, string OdbcSqlStr)
{
string SqlTableName = "";//sqlServer数据库中的表名
DataEngine.Odbc odbcobj = new DataEngine.Odbc(OdbcConn);
DataTable DtItemloc = new DataTable();//查询到的数据表
odbcobj.SelectReaderToTable(DtItemloc, OdbcSqlStr);
if (odbcobj.Error.Length > 0)
{
Writelog(odbcobj.Error);//记录错误日志
return;
}
if (DtItemloc.Rows.Count > 0)
{
System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(SqlConn);
bcp.DestinationTableName = SqlTableName;//sqlserver2000服务器上目标表的名称。
bcp.BulkCopyTimeout = 60 * 20;//超时之前操作完成所允许的秒数
bcp.WriteToServer(DtItemloc);//复制数据
bcp.Close();//关闭 SqlBulkCopy 实例
}
}