access最快速的批量导入SQL的方法 使用SqlBulkCopy

access最快速的批量导入SQL的方法 使用SqlBulkCopy
2008-11-22 23:51

string filename = DateTime.Now.ToString("yyyyMMdd") + ".mdb";
        string tablename = DateTime.Now.ToString("yyyyMMdd");

        if (File.Exists(Server.MapPath("/tempmdb/" + filename)))
        {
            //查询,如果此表存在,就表示已经添加过了, 不允许再添加
            if (db.counts("select count(id) from sysobjects where name='" + tablename + "'") > 0)
            {
                cm.msg("今天的数据表已经存在,您可能已经导入过了.请检查!!");
                Response.End();
            }
            DateTime d = DateTime.Now;

            //读取源文件


            db.ExeSql("select * into [" + tablename + "] from PosSrcTable");
            //读数据,写SQL
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + Server.MapPath("/tempmdb/" + filename) + ";");


            DataTable dts = new DataTable();
            OleDbDataAdapter da = new OleDbDataAdapter("select sss_date,custom_no,txn_type from ls", conn);
            da.Fill(dts);
            string connstr = "server=(local);database=fasfdas;uid=sa;pwd=adfdasmin";
          
           SqlBulkCopy bcp = new SqlBulkCopy(connstr);
            bcp.DestinationTableName = "[" + tablename + "]";
            bcp.WriteToServer(dts);
            //删除原来的表
            File.Delete(Server.MapPath("/tempmdb/" + filename));
            string totalitem = dts.Rows.Count.ToString();
            dts.Clear();
            dts.Dispose();
            TimeSpan ts = DateTime.Now.Subtract(d);
          
            Response.Write("共导入" + totalitem + "条数据! 用时 " + ts.Seconds.ToString()+"秒 ");
            Response.End();

14万条数据 使用时间6秒.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值