SQLServer批量更新、批量插入数据

https://blog.youkuaiyun.com/fengkang511/article/details/51778984?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-4-51778984.nonecase

 

最近遇到这样一个问题,项目中几个地方存储的地址只有一个字段,省市区县道路都在一起,地区检索用like,这简直是无法忍受,经商讨决定对原地址字段进行拆分,但是数据量相对较大,其中最少的一张表中有70万的数据,多的将近千万,下面开启拆分之路:
由于地址没有什么规律性,纯SQL语句不能满足需要,基本思路是程序配合SQL来实现。
方案一、最容易想到的,也是最开始想到的就是,把数据一行一行的取出来,经过运算、比对,找到省市县之后,再根据id把数据更新回去。具体方法不再实现,效率极低。频繁的数据库打开、关闭、读写,操作测试库都不能忍受,正式库上高并发,极容易超时出错。
方案二、上面是一条语句一条语句执行的,比它效率高点的是,一次性生成一定数量的SQL语句,放在一个list中,然后利用事务一次提交。这样做可以大幅度减少数据库建立连接、关闭连接的消耗,但是一次执行几百条或者几千条的SQL语句,磁盘读写量还是很大的,而且如果一条数据超时或者出错,则事务回滚,这个也是不能忍的。
就实验来说,上面两种方案耗费的时间都相差不多,70万条的数据差不多得一上午的时间去执行,那将近一千万的怎么活?查了很多资料,找到一很简洁的方法。
方案三:
1、在SQLserver上建立一个自定义表类型(在本例中简称表变量,此表变量非存储过程中声明的@tablename),其中 有三个字段,id,省,市

本软件主要功能: 1.批量对多个sql server数据库执行查询或者更新操作。 2.支持将记录集导出为txt、xml,office excel文件中,程序根据本机安装的EXCEL版本自动决定每个sheet最大的行数,超过每个sheet最大的行数后,查询结果集自动拆分工作表。(本版本支持多线程导出,可在关于->全局选项->增强选项设置相关的内容,包括对日期字段以及浮点字段设置导出掩码的功能)。 3.支持查询结果在水晶报表工具简单展示。 4.支持将查询出的结果集,批量复制到多个sql server服务器上。(类似SQLSERVER BCP工具,支持在批量复制之前或者之后同步执行特定的语句)。 5.支持将查询结果转换为sql语句。 6.支持批量对多个sql server数据库的特定用户修改密码。(随机密码) 7.支持同时对多个windows主机进行批量注销、重启,关机操作。 8.支持同时对多个windows主机的特定用户修改密码。(随机密码) 9.支持同时对多个windows主机执行特定的cmd命令。 10.对于EXCEL数据源的导入支持2003以及2007之后的版本。 11.对于相关操作的日志展示,将错误的日志在单独选项卡展示。 12.对于不需要返回结果的操作可勾选,菜单关于->全局选项->不返回任何结果集。(此选项在执行非查询语句时加快执行速度使用)。 本软件免费,注册功能仅用于统计使用人数,如需注册请加QQ:37605250索取,友情提示:请在QQ验证信息中注明优快云,谢谢! 安装NET Framework 2.0 SP2框架后仍然无法运行的用户,请安装下列补丁。(或用Microsoft Update更新到最新的补丁即可) Windows Server 2003 用于 Windows Server 2003 x86 的 Microsoft .NET Framework 4 (KB982671) Windows Server 2003 Microsoft .NET Framework 3.5 Service Pack 1 和用于 .NET 版本 2.0 至 3.5 的 .NET Framework 3.5 Family Update (KB951847) x86补丁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值