如何替换SQL Server数据库内容

如何替换SQL Server数据库内容,第1张

在告诉大家如何替换数据内容之前,我建议大家先了解一下SQL Server数据库的数据存储类型:在使用iwms系统的过程中,我们会经常遇到数据内容的替换 *** 作。在告诉大家如何替换数据内容之前,我建议大家先了解一下SQLServer数据库的数据存储类型:SQLServer数据类型:以上是数据库的基础知识,是做网站的朋友都应该知道的内容(无论你使用什么cms),所以建议大家都耐心看一下。数据替换一般都发生在字符串数据字段中,除了ntext类型字段以外的其他字符串数据字段都可以使用以下的sql语句进行替换:update [swf_Upload] set [Dir] = replace([Dir],'200901/14','200901/15')update [swf_Content] set [Description] =replace([Description],'200901/14','200901/15')update [swf_Content_01] set [content] = replace(convert(varchar(4000), [content]),'200901/14','200901/15') UPDATE [数据表名] SET [字段名] = REPLACE([字段名],'老字符串','新字符串')比如,替换iwms文章数据表(iwms_news)中的标题字段(title)的部分内容,我们应该这么写:UPDATE [iwms_news] SET [title] = REPLACE([title],'老字符串','新字符串')上面的sql语句在iwms后台的sql执行里面可以直接执行,基本上可以搞定所有的替换 *** 作,但是由于ntext数据长度的原因,这一方法对ntext类型字段无效。那我们该用什么方法替换ntext类型字段的内容呢?方法有两种:一是类型转换,将ntext类型转换为varchar类型,然后再用replace。适合于单页内容最大长度<4000的文章。update [数据表名] set [字段名] = replace(convert(varchar(4000), [字段名]),'老字符串','新字符串')比如,替换iwms文章数据表(iwms_news)中的标题字段(content,ntext类型字段)的部分内容,我们应该这么写:update iwms_news set [content] = replace(convert(varchar(4000),[content]),'老字符串','新字符串')二是SQLServer存储过程declare @ptr varbinary(16)declare @artId intdeclare @Position int,@len intset @len = datalength('老字符串')declare wux_Cursor scroll Cursorforselect textptr([字段名]),[key字段名] from [数据表名]for read onlyopen wux_Cursorfetch next from wux_Cursor into @ptr,@artIdwhile @@fetch_status=0beginselect @Position=patindex('%老字符串%',[字段名]) from [数据表名] where [key字段名]=@artIdwhile @Position>0beginset @Position=@Position-1updatetext [数据表名][字段名] @ptr @Position @len '新字符串'select @Position=patindex('%老字符串%',[字段名]) from [数据表名] where [key字段名]=@artIdendfetch next from wux_Cursor into @ptr,@artIdendclose wux_cursordeallocate wux_cursorgo比如,替换iwms文章数据表(iwms_news)中的标题字段(content,ntext类型字段)的部分内容,我们应该这么写declare @ptr varbinary(16)declare @artId intdeclare @Position int,@len intset @len = datalength('老字符串')

首先,随便打开数据库连接,复制需要格式化的sql到窗口中,就像这样

按键盘快捷键Ctrl+Shift+B,或者选择菜单的如下选项Automate->formatscript选项,就像下面这样

这个时候d出个对话框,这个对话框就是格式化sql的一些配置项,如果不熟悉的话,建议按照笔者这么配置,如下图:

配置好后,点击ok确定,可以看到sql已经被格式化了,

用replace函数将年,月替换成横杠,日替换成空,从而形成tb的标准日志格式,然后再做比较。这里给出replace的示例:

select replace(replace(REPLACE('2017年01月01日', '年', '-'), '月', '-'), '日', '')

注: 此replace函数在SQL Server数据库上适用,其他数据库可能要做相应调整。

表数量多么,所有字段都要更新?

给个思路先:

查询所有表中带有字符型字段的字段(varchar,nvarchar  其他类型酌情考虑)

select SOname as t_name, SCname as f_name,STname as f_type from         

sysobjects   SO, -- 对象表  

syscolumns   SC, -- 列名表  

systypes     ST  -- 数据类型表   

where SOid = SCid 

and SOxtype = 'U'                   -- 类型U表示表,V表示视图  

and SOstatus >= 0                                      -- status >= 0 为非系统对象  

and SCxtype = STxusertype

and stname in ('varchar','nvarchar')

order by SOname,scname

2根据查询出的表名和所属字段,拼接出各表的update 语句

方法有很多种,比如从上边SQL查处的结果里把表名抽出来,逐个传入以下语句

declare @str varchar(4000)    

declare @strTN varchar(100)

set @strTN = 'CSVTable'        --定义表名

set @str = ''

select @str = @str + ',' + SCname + '=REPLACE(' + SCname + ',''#'','''')' from         

sysobjects   SO, -- 对象表  

syscolumns   SC, -- 列名表  

systypes     ST  -- 数据类型表   

where SOid = SCid 

and SOxtype = 'U'                   -- 类型U表示表,V表示视图  

and SOstatus >= 0                                      -- status >= 0 为非系统对象  

and SCxtype = STxusertype

and stname in ('varchar','nvarchar')

and SOname = @strTN

order by SOname,scname

IF @str <> '' set @str= 'update ' + @strTN + ' set ' + SUBSTRING(@str,2,4000)

PRINT @str    --打印出SQL

exec(@str)    --执行SQL

在Linux里面,有一个比较好的工具sed,sed -i "s#A#B#g" filename,比如:sed -i "s#linux#windows#g" atxt,这样可以把atxt文件中所有的linux替换成windows,“#”可以换成其他的字符,可以根据实际情况来定。如果替换的内容来自文件,可以用脚本遍历文件的方式实现。例如:

旧地址文件:Atxt,需要处理的sql文件:mysqlsql,替换后的新内容:newtext

#/bin/bash

for line in `cat Atxt`;

do

sed -i "s#$line#newtext#g" mysqlsql

done

当然,也可以指定替换行的范围(例如50行到100行),具体的请参考linux下sed命令的用法

用sql的批量更新功能,把要替换字符替换成想要替换成的字符。

sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符。

命令总解:update 表的名称 set 替换字段=REPLACE(替换字段,原来内容,新内容)

举例说明:

1)把backupfile表里url的字段内容为>

以上就是关于如何替换SQL Server数据库内容全部的内容,包括:如何替换SQL Server数据库内容、aqua data studio的sql窗口怎么查找替换、sql替换查询结果字符串中的字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10191377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存