读书人

请问:怎么客户端快速将大量数据导入a

发布时间: 2012-12-15 15:16:03 作者: rapoo

请教:如何客户端快速将大量数据导入access?
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();
}

}

[最优解释]
使用SSIS包,新建workflow,再在workflow基础上创建源,目标导向,可以快速完成从SQL到Access数据同步,详细的请楼主可以百度一下
------其他解决方案--------------------


批量导入效率的做法只有bulkcopy了。
[其他解释]
写一个程序,用DataReader一条条导,很快的。
[其他解释]
用datareader 好像也很慢。打算用OleDbDataAdapter,datatable ,现在已经将sql数据读到datatable,
但是不知道如何调用oledbdataadapter更新access。想用类似批量更新,例如读取300条就更新一次。
sql和access table 都是一样的,有username,address,phone...字段。
初学,最好有代码。谢谢了。
[其他解释]
导入到Access最快的莫过于事务了,应该没有别的更快了,像Access这种数据库性能本身就不好。
[其他解释]
用阅读器一边读取SQL里的记录,一边插入Access,对插入Access用事务。
[其他解释]
是的,ado.ent提供了,批量写入的功能,你查查SqlBulkCopy这个类库

读书人网 >asp.net

热点推荐