SQL批量查询和替换

SQL批量查询和替换,第1张

1.把新的结果集在xls文件中做好,保存文件.

2.在数据库中新建一个存储新数据并用于替换的表.

用create

table,或者select

into

...where

1<>1克隆.

3.将xls文件数据批量导入数据库新表.

4.用联表更新语句,将新表数据更新到表中.

5.drop

table

语句删除临时用的存储表.

---------

此语句用于mssql批量导入,注意在导入时文件需处于关闭.

例:insert

into

TableName(Column1,Column2,Column3,Column4)

select

Column1,Column2,Column3,Column4

from

OpenDataSource

(

'Microsoft.Jet.OLEDB.4.0',

'Data

Source="Path\FileName.xls"User

ID=AdminPassword=Extended

properties=Excel

5.0'

)...sheet1$

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

旧地址文件:A.txt,需要处理的sql文件:mysql.sql,替换后的新内容:newtext

#/bin/bash

for line in `cat .A.txt`

do

sed -i "s#$line#newtext#g" mysql.sql

done

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

我不知道你用的是什么数据库,下面我给你一个Oracle数据库的替换掉 (-N+数字)的例子

update [dbo].[Winit库存] set [商品编号] = REGEXP_REPLACE([商品编号],'\-N\d+','')

不同的数据库,用的可以用正则表达式的replace函数不一样

SQL Server中我不知道你那里有没有dbo.RegexReplace函数,是不是还要现建这个替换函数

update [dbo].[Winit库存] set [商品编号] = dbo.RegexReplace([商品编号],'\-N\d+','',1)

下面是建立RegexReplace函数的sql语句

--如果存在则删除原有函数  

IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL   

    DROP FUNCTION dbo.RegexReplace  

GO  

--开始创建正则替换函数  

 CREATE FUNCTION dbo.RegexReplace  

(  

    @string VARCHAR(MAX),   --被替换的字符串  

    @pattern VARCHAR(255),  --替换模板  

    @replacestr VARCHAR(255),   --替换后的字符串  

    @IgnoreCase INT = 0 --0区分大小写 1不区分大小写  

)  

RETURNS VARCHAR(8000)  

AS   

BEGIN  

    DECLARE @objRegex INT, @retstr VARCHAR(8000)  

    --创建对象  

    EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT  

    --设置属性  

    EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern  

    EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase  

    EXEC sp_OASetProperty @objRegex, 'Global', 1  

    --执行  

    EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr  

    --释放  

    EXECUTE sp_OADestroy @objRegex  

    RETURN @retstr  

END  

GO  

--保证正常运行的话,需要将Ole Automation Procedures选项置为1    

EXEC sp_configure 'show advanced options', 1    

RECONFIGURE WITH OVERRIDE   

EXEC sp_configure 'Ole Automation Procedures', 1    

RECONFIGURE WITH OVERRIDE


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存