有两个数据库.在不同的服务器上.现在要把一数据库中某表的值复制到另一个数据库中的某表中(表中字段不同).用c#如何能够实现?我现在用的方法是:建立两个连接,分别连接两个数据库服务器。现在能够从一个服务器中读出数据并放到DataSet中.下面该如何将DataSet值取出并写入到另一服务器的数据库中?如有好方法也请写出!

解决方案 »

  1.   

    1。源数据放到dataset;
    2。目标绑定到一个空数据集到另一个dataset(就是只有结构)
    3。源dataset复制到 目标 dataset
    4。使用SqlDataAdapter的Update方法更新到目的服务器此方法针对1万条记录进行了测试,自己感觉效率还比较高。更好的方法暂时没有找到,如果谁有更好的方法请告知,谢谢
      

  2.   

    用c#连SQL就可以,opendatasource;
      

  3.   

    // 打开源连接
    DataSet ds = new DataSet();
    using (SqlConnection cnn = new SqlConnection())
    {
    cnn.ConnectionString = cnnString;
    cnn.Open();
    SqlDataAdapter da = new SqlDataAdapter(sql1,cnn);
    // 填充源数据
    da.Fill(ds); 
    cnn.Close();
    }
    // 打开目标连接
    using(SqlConnection cnn2 = new SqlConnection())
    {
    cnn2.ConnectionString = cnnStringDest;
    cnn2.Open();
    DataSet ds_d = new DataSet();//目的表填充
    SqlDataAdapter da_d = new SqlDataAdapter(sql2,cnn2);

    daInsCmd.Connection = cnn2;
    da_d.InsertCommand = daInsCmd;---这里生成你目的表的 InsertCommand;
    da_d.Fill(ds_d,"table");
    int c = 0;
    foreach (DataRow dri in ds.Tables[0].Rows)
    {
    DataRow newRow = ds_d.Tables[0].NewRow();
    for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
    {
    newRow[i] = dri[i];
    }
    ds_d.Tables[0].Rows.Add(newRow);
    c++;

    }
    da_d.Update(ds_d,"table");
    }大体代码是这样的,自己调试一下吧
      

  4.   

    设置同一个DataAdapter的SelectCommand以及InsertCommand。
    SelectCommand:设置从源数据库获得读取;
    InsertCommand:设置为目标数据库。但是要为DataAdapter定义新的Update方法,来进行提交数据库更新。
      

  5.   

    1.写一个XML的配置文件,把要导入的语句写里边,sql用OPENDATASOURCE读数据源
    2.用c#写程序读配置文件