asp.net excle表批量导入到sql server 2000的同时实现更新功能

问题描述

asp.net excle表批量导入到sql server 2000的同时实现更新功能

excle批量导入功能已经实现了,用的SqlBulkCopy。
但怎样能实现更新功能呢?
导入的数据表内容很多,都是上万条数据的,所以要保证效率!
有知道的大神,请给我详细代码,谢谢!

解决方案

我用的下面代码实现的,是在网上找的方法,主要思路是,两个表比较,删除相同数据,然后用SqlBulkCopy导入数据。
现在的问题是,如果excle表和sql server表的数据很多,执行起来会很慢,经常超时。
求大神帮解决一下,重在效率,越快越好。
string connString = "server=localhost;uid=sa;pwd=123456;database=excel";
DataSet ds = new DataSet();

        try
        {
            SqlConnection sqlconn = new SqlConnection(connectionString);
            sqlconn.Open();

            //获取全部数据
            string strConn = "Provider = Microsoft.Jet.OLEDB.4.0;" + "Data Source =C://Inetpub//wwwroot//soft//pic_1//31.xls;" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            strExcel = "select * from [sheet1$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            myCommand.Fill(ds, "[sheet1$]");
            conn.Close();
            DataTable dt = new DataTable();
            dt = ds.Tables[0];
            var lq = from t in ds.Tables[0].AsEnumerable()
                         select new
                         {
                             ordNo = t.Field<double>("ratecode")
                         };
                List<string> ordList = new List<string>();
                foreach (var q in lq)
                {
                    ordList.Add(q.ordNo.ToString());
                }
                string k = string.Join("','", ordList.ToArray());
                               new SqlCommand()
                {
                    CommandText = "Delete From product1 Where ratecode In('" + k + "')",
                    Connection = sqlconn,
                    CommandType = CommandType.Text,
                    CommandTimeout = 180
                }.ExecuteNonQuery();

            //用bcp导入数据
            using (SqlBulkCopy bcp = new SqlBulkCopy(connectionString))
            {
                bcp.BatchSize = 10000;//每次传输的行数
                bcp.BulkCopyTimeout = 18000;//指示60秒按超时处理
                bcp.NotifyAfter = 20000;//进度提示的行数
                bcp.DestinationTableName = "dbo.product1";//目标表

                bcp.ColumnMappings.Add("prefix", "prefix");
                bcp.ColumnMappings.Add("provider", "provider");
                bcp.ColumnMappings.Add("destination", "destination");
                bcp.ColumnMappings.Add("ratecode", "ratecode");
                bcp.ColumnMappings.Add("ratelevel", "ratelevel");
                bcp.ColumnMappings.Add("rateper", "rateper");
                bcp.ColumnMappings.Add("billingincr", "billingincr");
                bcp.ColumnMappings.Add("issuedate", "issuedate");
                bcp.ColumnMappings.Add("effentivedate", "effentivedate");
                bcp.ColumnMappings.Add("changetype", "changetype");

                bcp.WriteToServer(dt);
                bcp.Close();
            }

            sqlconn.Close();

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

}

时间: 2024-09-10 23:39:18

asp.net excle表批量导入到sql server 2000的同时实现更新功能的相关文章

使用 Microsoft SQL Server 2000 的全文搜索功能构建 Web 搜索应用程序

server|web|程序|全文搜索 使用 Microsoft SQL Server 2000 的全文搜索功能构建 Web 搜索应用程序 Andrew B. CenciniMicrosoft Corporation 2002年12月 适用于:    Microsoft SQL Server 2000摘要:学习如何充分利用 SQL Server 2000 的全文搜索功能.本文包含有关实现最大吞吐率和最佳性能的几点提示和技巧. 目录简介 全文搜索功能简介 配置全文搜索功能 全文查询 排位和优化 其他

如何使用SQL Server 2000中的XML功能

在本文中我们将讨论如何通过T-SQL的FOR XML子句从SQL Server返回XML.本文将通过几个例子来介绍返回XML数据和架构信息的几种不同方式,还将介绍将XML转换成更令人满意的格式的方法.然后讨论OPENXML,以及将XML文档联接到数据库表和使用WriteXml和GetXml方法从数据集提取XML的方法. SQL Server 2000提供了一些XML功能,用于通过XML将关系行集合转换成分层的XML文档.读取XML文档和批量加载数据.例如,可以将XML文档传递到存储过程,将XML

.net 批量导入数据SQL Server

问题描述 刚开始学习批量导入数据,一点都不懂什么意思,求例子,带有上传控件,支持Excel2003,和2007,拜托了,大家 解决方案 解决方案二:例子代码没有,推荐使用NPOI

怎样将Excel中的数据导入到SQL Server 2000数据库中

excel|server|数据|数据库 1.打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按 下一步 ,2.选择数据源 Microsoft Excel 97-2000,文件名 选择要导入的xls文件,按 下一步 ,3.选择目的 用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库的话,如 VVV),使用SQL Server身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如 c

SQL Server 2000 的新特性

1.2 SQL Server 2000 的新特性SQL Server 2000 全面扩展了SQL Server 7.0 的性能可靠性和易用性使它成为一个杰出的数据库平台可用于大型联机事务处理数据仓库以及电子商务等SQL Server 2000 的新特性主要有以下内容 1.2.1 数据库增强SQL Server 2000 引进了数据库和服务器增强功能以及其它一些新的特性1 XML Extensible Markup Language 扩展标示语言支持关系数据库引擎可以返回XML 文档数据XML 数

SQL Server 2000企业版安装教程

server|教程 SQL Server 2000是微软公司最新版的大型数据库服务器,其性能指标在各方面都有赶超Oracle数据库的趋势.在经历了SQL Server 6.5和7.0两个版本的尝试后,微软公司终于开始向大规模的业务领域进发了.记得在以前各种关于SQL Server的文章,都会将其定位成中小型应用方面,这种感觉被大家自然的延续到了2000版之中.其实这是一种误解.在过去的很长一段时间中,微软公司凭请了世界上最优秀的数据库专家以及专门搭建了信息量可谓空前的地理信息系统,励精图治,就是

如何监视 SQL Server 2000 阻塞

server 概要本文是以下 Microsoft 知识库文章的 Microsoft SQL Server 2000 版的更新,它适用于 Microsoft SQL Server 7.0: 251004 (http://support.microsoft.com/kb/251004/) 如何监视 SQL Server 7.0 阻塞 本文提供可用于诊断阻塞和性能问题的存储过程的用法和设计.有关如何了解和解决阻塞问题的说明,请参阅以下 Microsoft 知识库文章: 224453 (http://s

SQL Server 2000的常见问题

server|问题 我新安装的操作系统是Windows 2003 standard edition,前些天装了SQL Server 2005的企业版,安装十分顺利.昨天晚上我装SQL Server 2000,从网上搜到说SQL Server 2000和2005可以同时安装在一个操作系统里,于是我就开始安装.谁知,在安装过程中,出现了些问题.现将我在安装过程中遇到的问题及解决方法总结如下: 问题1:在安装到"安装定义"中,我选择默认的"服务器和客户端工具",可在&qu

使用SQL Server 2000索引视图提高性能

本文介绍 SQL Server 2000 企业版的新功能 - 索引视图.讲解索引视图并讨论一些提高性能的具体方案. 什么是索引视图? 许多年来,Microsoft SQL Server 一直都提供创建虚拟表(称为视图)的功能.在过去,这些视图主要有两种用途: 提供安全机制,将用户限制在一个或多个基表中的数据的某个子集. 提供一种机制,允许开发人员定制用户如何才能以逻辑方式查看存储在基表中的数据. SQL Server 2000 已经扩展了 SQL Server 视图的功能,以提高系统性能.它可以