mysql 批量替换域名_msyql 中批量替换url网址中的域名方案。
最近做一个项目(项目是采用的第三方的内容php框架+mysql搭建的),项目中有个功能需要采集大量的文章数据,数据库中直接存储的是文章的网址(举例:www.xxx.com/article?id=…
所以网站采集过后需要批量处理文章的url网址更换成现有的域名,需要大批量的更换数据库文章链接,查看了项目原来更新的方式是采取读取文章URL,再后端程序批量替换,这样操作耗时而且会造成程序页面卡死终止运行。
想优化这种更新方式,思考着采用sql代码上操作速度应该很快。
通过实验mysql中replace 函数是不能直接使用正则表达式替换的。
网络搜索也没找到好的解决办法。通过自己研究采用replace 函数+ REGEXP 函数、再集合其他字符串处理做出来的批量更新url字符串中的网址。
解决方案和思路如下:
注释:id , url 是你数据库存储链接的字段名。以下举例都是以https:// 做的。
1、先验证域名是哪种方式(http 或者https)
a、如果url是以http或者https开头的则进入下一个验证:再次验证区分具体是HTTP 或者https 。
b、如果url不是以http或者https开通的则直接返回URL。
select if(url REGEXP '^(https://)|(http://)',if(url REGEXP '^(https://)','','0'), url ) ,id,url from table_name
2、先排除url中的http:// 或者 https:// 用于后续取值使用
SUBSTRING(url,LENGTH('https://')+1) //返回的url值是不包含http:// 或者 https:// 的字符串
3、搜索定位已经删除(http:// 或者 https://)的字符串中的‘/’
LOCATE('/',SUBSTRING(url,LENGTH('https://')+1
//删除https:// 后,URL = ‘www.2333.com/a/ba/ba’
//查找URL 中从左边第一个‘/’ 也就是定位域名后面的斜杠位置。用于后续把“www.2333.com/”这个完整域名取出作为…
4、完整取出 url中的网址(格式:www.2333.com/)。
SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('https://')+1))+ LENGTH('https://') )
5、最后加上if 判断当前url 具体是哪种格式的网址,然后再采用对应的截取方式取出带替换掉的域名。(方便阅读代码做了换行)
REPLACE(url,
if(url REGEXP '^(https://)|(http://)',if(url REGEXP '^(https://)',
SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('https://')+1))+ LENGTH('https://') )
,SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('http://')+1))+ LENGTH('http://') )
),url)
,"t.w123.com/")
这是拿来修改的表中所有数据的sql代码:
update table_name set url = REPLACE(url,
if(url REGEXP '^(https://)|(http://)',if(url REGEXP '^(https://)',
SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('https://')+1))+ LENGTH('https://') )
,SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('http://')+1))+ LENGTH('http://') )
),url)
,"t.w123.com/")
以上是我处理本次项目遇到的问题方案,处理更新效率比之前的后端程序快很多。发布记录下,如果大家有更好的建议方案欢迎留言交流谢谢。
mysql 批量替换域名_msyql 中批量替换url网址中的域名方案。相关推荐
- URL网址中的编码与解码问题
一.中文编码有三种形式 1.utf-8编码 2.gbk编码 3.gb2312编码 这三种编码方式对汉字编码的组数不一样,其中2和3,一个汉字对应的都是两组%XX,而1对应的 ...
- 浏览器中输入的URL网址的意义-概述
1.URL网址的含义 很久以前就有一个疑惑,通过浏览器访问网站时输入的网址(比如https://editor.csdn.net/md/)到底什么意思以及其背后的原理是什么呢?最近工作涉及到一些网络协议 ...
- 巧用excel公式提取网址中的域名---超级好用
巧用excel公式提取网址中的域名-超级好用 经常会整理很多网址,需要按照他们的域名归类,下面是公式 在a1列是我们要整理的网址 b列我们输入公式 =MID(A1,SEARCH("/&quo ...
- java 文本编辑器替换特殊字符_linux中批量替换文本中字符串--转载
(一)通过vi编辑器来替换. vi/vim 中可以使用 :s 命令来替换字符串. :s/well/good/ 替换当前行第一个 well 为 good :s/well/good/g 替换当前行所有 w ...
- PyCharm中批量查找及替换
选中需要操作的字符 Ctrl + R 替换 Ctrl + Shift + F 全局查找 Ctrl + Shift + R 全局替换 源自: PyCharm中批量查找及替换 - Ella_Wu - 博客 ...
- 怎样在word中批量替换文字?Word替换文字这一招你会吗?
平时我们在编辑word文档的时候,经常会遇到将文档中的某一个文字或者是数字替换成别的内容,很多人想到的方法就是一个字一个字的找,之后进行更改,这样会很耽误我们的时间,如果你的文档内容过多的话难道你也会 ...
- Excel如何在整个工作簿中批量替换指定数据
今天跟大家分享一下Excel如何在整个工作簿中批量替换 1.下面以下图为例跟大家介绍一下怎么批量替换整个工作簿数据. 2.首先我们点击下图选项 3.单击[更多].[批量替换] 4.选择全部工作表,然后 ...
- WordSR 在多个Word文件中批量查找替换
这阵子在看一些技术文档,都是 word 格式的,需要在多个Word文件中批量查找指定的内容,找不到免费的合适的软件,顺手开发了这个工具软件,下载地址 WordSR v0.2,下面是一些版权信息和软件介 ...
- 字体在ppt中可以整体替换吗_如何在ppt2010中批量替换字体
有时当我们在制作完成演示文稿的时候,才发现里面的字体并不是我们想要的,为了快速修改,我们可以使用ppt中的替换功能来进行批量字体的修改,下面就让学习啦小编告诉你在ppt2010中批量替换字体的方法,希 ...
最新文章
- org.hibernate.hibernate.connection.release_mode
- 使用U盘装系统步骤详解
- 彻底弄懂flex布局
- python 启动django时报错MySQLdb._exceptions.OperationalError: (2059, <NULL>)和django.db.utils.OperationalEr
- Oracle database 安装在 Linux(rhel,oel,centos)上的用户设置
- 在ASP.Net中使用FCKeditor
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- python表达式3 2 3的值为_Python3中的表达式运算符
- 《Unix环境高级编程》学习笔记:从点到面
- 将MSHFlexGrid1中记录导出为Excel
- apache2: unrecognized service
- 版本管理工具git常用命令
- LinGo基本用法总结
- 计算机程序设计员技能试题,计算机程序设计员试题及答案[1]
- java fps计算_帧率(FPS)计算的六种方法总结
- 网站建设:制作一个网站一般要多少钱?
- Verilog之条件语句、循环语句、块语句与生成语句
- Luvwgyx的娱乐场-题解
- 【AD】Altium Designer 新建一个项目
- 大道至简之九:周期的实质与投资机会