ASP+SQL. 因为sql服务器不允许装MDE Enginee之类的东西,所以无法用存储过程bulkcopy将sql数据导入access. 现在只能在客户端将sql里的记录导入access。因为数据量很大,几十万条,现在一条条读,用datatable写入MDB,需要十多分钟,现在有没有好的办法在网页客户端将SQL快速倒入access?谢谢
以下是我目前的代码,有没有办法能改进一下,让导入大量数据速度快点?
using (System.Data.SqlClient.SqlCommand sqlcmd1 = new System.Data.SqlClient.SqlCommand("select * from [Tbl_users]", SQLconn))
                        {
                            sqlcmd1.CommandType = System.Data.CommandType.Text;
                            SqlDataAdapter sda = new SqlDataAdapter(sqlcmd1);
                            DataTable dt = new DataTable();
                            sda.Fill(dt);                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                mdbcmd1.Parameters.Clear();
                                mdbcmd1.Parameters.AddWithValue("@[username]", dt.Rows[i]["username"].ToString());
                                mdbcmd1.Parameters.AddWithValue("@[phone]", dt.Rows[i]["phone"].ToString());
                                mdbcmd1.Parameters.AddWithValue("@[birthday]", dt.Rows[i]["birthday"].ToString());
                                mdbcmd1.Parameters.AddWithValue("@[address]", dt.Rows[i]["address"].ToString());                                mdbcmd1.ExecuteNonQuery();
                            }                        }

解决方案 »

  1.   

    批量导入效率的做法只有bulkcopy了。
      

  2.   

    写一个程序,用DataReader一条条导,很快的。
      

  3.   

    用datareader 好像也很慢。打算用OleDbDataAdapter,datatable ,现在已经将sql数据读到datatable,
    但是不知道如何调用oledbdataadapter更新access。想用类似批量更新,例如读取300条就更新一次。
    sql和access table 都是一样的,有username,address,phone...字段。
    初学,最好有代码。谢谢了。
      

  4.   

    导入到Access最快的莫过于事务了,应该没有别的更快了,像Access这种数据库性能本身就不好。
      

  5.   

    用阅读器一边读取SQL里的记录,一边插入Access,对插入Access用事务。
      

  6.   

    使用SSIS包,新建workflow,再在workflow基础上创建源,目标导向,可以快速完成从SQL到Access数据同步,详细的请楼主可以百度一下
      

  7.   

    是的,ado.ent提供了,批量写入的功能,你查查SqlBulkCopy这个类库