目标数据库只能是sqlserver 来源数据库 无所谓 只要能用ado.net 将来源数据读取到dataset或者datareader 中就可以了。
代码如下:
using system.data;
using system.diagnostics;
using system.data.sqlclient;
string connectionstring = data source=hg-j3ejj9lsw5py;initial catalog=test;user id=sa;password=hg;
datatable datatable = sql_.select_datagrid( select a from large where 1=0 ).tables[0];
string passportkey;
for (int i = 0; i {
passportkey = guid.newguid().tostring();
datarow datarow = datatable.newrow();
datarow[0] = passportkey;
datatable.rows.add(datarow);
}
sqlconnection sqlconnection = new sqlconnection(connectionstring);
sqlconnection.open();
sqltransaction sqltran = sqlconnection.begintransaction();
sqlbulkcopy sqlbulkcopy = new sqlbulkcopy(sqlconnection, sqlbulkcopyoptions.keepidentity, sqltran);
sqlbulkcopy.destinationtablename = large;
sqlbulkcopy.batchsize = datatable.rows.count;
if (datatable != null && datatable.rows.count != 0)
{
sqlbulkcopy.writetoserver(datatable);
}
sqlbulkcopy.close();
sqltran.rollback();
sqlconnection.close();
注解: sqlbulkcopy.destinationtablename = large; large 指的是目标表的名称
datatable 的结构要和数据库中的表的结构相同
(datatable的列不能多于数据库里面的)
(datatable的列可以少于数据库里面的 如果数据库这一列有默认值的话)
这里面 我使用了事务 您在使用的时候 也可以不用事务