循环库的所有表,修改中文编码,耗费资源问题

xyz1202 2008-02-27 05:25:14
一个库,70个表,一共100w条左右的记录,需要更新里面的中文编码(如何update已经实现),有没有好的遍历办法?
如果按照常规的循环,1次遍历+修改下来1个小时肯定不够。而且按照现实做法下来,走到一半的时候就没有动静了。不知道是不是资源耗尽,还是什么?
如果分批完成有没有什么办法解决阿? 谢谢。
...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyz1202 2008-02-27
  • 打赏
  • 举报
回复
我知道如何查询表,我想问如何提高效率?
bcp是什么?
tigerleq 2008-02-27
  • 打赏
  • 举报
回复
bcp可以考虑
wzy_love_sly 2008-02-27
  • 打赏
  • 举报
回复
mysql不会,soryy
上面是sql的,去 mysql版问下如何动态查询库的所有表名,该有语句
xyz1202 2008-02-27
  • 打赏
  • 举报
回复
而且也没看懂。
您是说用sp_msforeachtable来遍历表并修改?这是100w条数据,也不会很快吧。也只是猜想。
xyz1202 2008-02-27
  • 打赏
  • 举报
回复
不好意思,我忘记说了,我的是mysql表.
wzy_love_sly 2008-02-27
  • 打赏
  • 举报
回复
sql查询所有用户表的列表,详细信息,如:记录数,表占用大小等

EXEC sp_MSforeachtable "EXECUTE sp_spaceused '?'"


mssql里sp_MSforeachtable和sp_MSforeachdb的用法
从mssql6.5开始,微软提供了两个不公开,非常有用的系统存储过程sp_MSforeachtable和sp_MSforeachdb,用于遍历某个数据库的每个表和遍历DBMS管理下的每个数据库。

mssql里sp_MSforeachtable和sp_MSforeachdb的用法

我们在master数据库里执行下面的语句可以看到两个proc详细的代码


use master


exec sp_helptext sp_MSforeachtable


exec sp_helptext sp_Msforeachdb


sp_MSforeachtable系统存储过程有7个参数,解释如下:


@command1 nvarchar(2000), --第一条运行的T-SQL指令


@replacechar nchar(1) = N'?', --指定的占位符号


@command2 nvarchar(2000)= null,--第二条运行的T-SQL指令


@command3 nvarchar(2000)= null, --第三条运行的T-SQL指令


@whereand nvarchar(2000)= null, --可选条件来选择表


@precommand nvarchar(2000)= null, --在表前执行的指令


@postcommand nvarchar(2000)= null --在表后执行的指令



mssql里sp_MSforeachtable和sp_MSforeachdb的用法- -

sp_MSforeachdb除了@whereand外,和sp_MSforeachtable的参数是一样的。




--我们来看看sp_MSforeachtable的用法(sp_MSforeachdb的用法类似):

--统计数据库里每个表的详细情况:

exec sp_MSforeachtable @command1="sp_spaceused '?'"




--检查数据库里每个表或索引视图的数据、索引及text、ntext 和image 页的完整性

--下列语句需在单用户模式下执行(sp_dboption 'db_name', 'single user', 'true'),将true改成false就又变成多用户了

exec sp_msforeachtable "dbcc checktable('?',repair_rebuild)"


sp_MSforeachtable @command1='Delete from ?'
这样可以删除所有表中的数据

也可以这样写

sp_MSforeachtable @command1 = "TRUNCATE TABLE ?"

----------------------------------------------------------------------

创建一个新表AAA,表中包含其它表的名称和记录数量:

create table AAA(id int identity(1,1),tablename varchar(50),[rowcount] int)

delete from AAA

exec sp_msforeachtable 'insert AAA(tablename, [rowcount]) select N''?'', count(*) from ?'

select * from AAA where AAA.[rowcount]>0

----------------------------------------------------------------------

1。在sql server2000下一个数据库中有建立了几十个表,现在要给每个表增加同样的列。可以用"alter table"语句,但是这么多表一个一个的操作太麻烦,有什么方法可以操作循环每一个表呢?
方法:sp_msforeachtable 'alter table ? add 列名 int'



2。假设所有表中的'note' 字段不能为空,如果为空则要改为"。
方法:sp_msforeachtable 'update ? set note='''' where note is null'

----------------------------------------------------------------------

结论: 看了很多例子以后发现sp_msforeachtable 里面那个问号指代数据库中所有的表

此存储过程还有一个参数为@whereend,可以这么写 @whereend='name in 'table1','table2',... ...'

这个参数是限制此存储过程的操作用于哪些表


可用吗?不行就动态拼接出语句执行
【无迹卡尔曼滤波】不确定和间接测量的非线性动力系统识别研究(Matlab代码实现)内容概要:本文围绕“无迹卡尔曼滤波在不确定和间接测量的非线性动力系统识别中的应用”展开研究,重点介绍如何利用无迹卡尔曼滤波(UKF)对存在非线性特性和测量不确定性的动力系统进行状态估计与系统识别,并提供了基于Matlab的代码实现方案。文中强调了UKF相较于传统扩展卡尔曼滤波(EKF)在处理强非线性系统时的优势,能够更准确地捕捉状态分布的高阶统计特性,提升估计精度。研究涵盖算法原理分析、模型构建、仿真验证及实际应用场景探讨,适用于需要高精度动态状态估计的复杂系统建模。; 适合人群:具备一定控制理论、信号处理或系统辨识基础,熟悉Matlab编程,从事自动化、电气工程、航空航天、机器人等领域科研工作的研究生、科研人员及工程师。; 使用场景及目标:①应用于非线性系统的状态估计,如传感器融合、导航定位、电力系统动态分析等;②用于处理间接测量和噪声干扰严重的系统识别问题;③帮助读者掌握UKF算法的设计与实现,提升对非线性滤波方法的理解与应用能力。; 阅读建议:建议结合提供的Matlab代码进行实践操作,对照算法流程逐步调试与仿真,加深对无迹变换和状态更新机制的理解,同时可拓展至其他非线性滤波方法(如EKF、PF)的对比研究。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧