文档章节

MYSQL全库查找指定字符串

楊先森
 楊先森
发布于 2016/01/16 09:33
字数 320
阅读 2793
收藏 7
DELIMITER //
DROP PROCEDURE IF EXISTS `proc_FindStrInAllDataBase`//
# CALL `proc_FindStrInAllDataBase` ('testdb','中');
CREATE PROCEDURE `proc_FindStrInAllDataBase` 
(
 IN para_databasename VARCHAR(128),
 IN para_finstr VARCHAR(128) 
)
BEGIN
 -- 需要定义接收游标数据的变量 
 DECLARE tmp_dbname VARCHAR(128);
 DECLARE tmp_tbname VARCHAR(128);
 DECLARE tmp_colname VARCHAR(128); 
 -- 遍历数据结束标志
 DECLARE done INT DEFAULT FALSE;
  
   
 -- 游标
 DECLARE cur_db_tb CURSOR 
 FOR 
 SELECT  
  #*,
  c.table_schema,c.table_name,c.COLUMN_NAME
 FROM 
  information_schema.`COLUMNS` C
  INNER JOIN information_schema.`TABLES` t ON c.`TABLE_NAME`=t.`TABLE_NAME` 
 WHERE
  T.`TABLE_TYPE`='BASE TABLE' 
 AND 
  (c.data_type  LIKE '%char%'  OR c.data_type  LIKE '%text%')
 AND 
  (C.TABLE_SCHEMA=para_databasename OR IFNULL(para_databasename,'') ='') AND IFNULL(para_finstr,'')<>'';
  
 -- 将结束标志绑定到游标
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
 CREATE TEMPORARY TABLE IF NOT EXISTS rstb(dbname VARCHAR(128),tbname VARCHAR(128),colname VARCHAR(128),cnt INT); 
 -- 打开游标
 OPEN cur_db_tb;
   -- 开始循环
   read_loop: LOOP
   -- 提取游标里的数据,这里只有一个,多个的话也一样;
   FETCH cur_db_tb INTO  tmp_dbname,tmp_tbname,tmp_colname;
   -- 声明结束的时候
   IF done THEN
   LEAVE read_loop;
   END IF;
   -- 这里做你想做的循环的事件
   SET @sqlstr=CONCAT('select count(1) into @rn from ',tmp_dbname,'.',tmp_tbname,' where ',tmp_colname,' like ''%',para_finstr,'%''');
   
   PREPARE str FROM @sqlstr;  
   EXECUTE str;   
   DEALLOCATE PREPARE str;
   IF IFNULL(@rn,0)>0
    THEN
    INSERT INTO rstb VALUES(tmp_dbname,tmp_tbname,tmp_colname,@rn);
   END IF;

   END LOOP;
 -- 关闭游标
 CLOSE cur_db_tb;
 
 SELECT * FROM rstb;
 DROP TABLE rstb;
 
END
//
DELIMITER ;

© 著作权归作者所有

楊先森
粉丝 0
博文 1
码字总数 320
作品 0
厦门
数据库管理员
私信 提问
Mysql 基于innobackupex 的备份&恢复

备份,对于任何数据库,任何系统都是重中之重。针对Mysql,我选择percona xtrabackup软件。我更喜欢物理层面的热备份。而不是逻辑层面的备份(mysqldump),当然很多情况,也要定期做mysqldu...

hsbxxl
2018/06/26
0
0
MySQL · 实现分析 · 对字符集和字符序支持的实现

前言 在使用MySQL数据库的时候,常常会发现由于charset或collation设置不正确导致的各种问题。一方面由于数据在client和server之间传输需要做转换会导致CPU使用率增加;另一方面由于charset...

阿里云RDS-数据库内核组
2017/03/07
0
0
Python全栈 进阶(进阶内容都在这了)

MySQL 数据库 终端命令: vi 文本编辑器 cat /etc/password | grep “用户名” 获取user表 sudo -i 获取root权限 sudo apt-get install python3-pip 安装pip3 sudo pip3 install pymysql 安装......

巴黎香榭
2018/09/02
0
0
MySQL的EXPLAIN指令使用例解

数库库一共5个表(tab1,tab2等等),表结构如下: mysql> desc tab1; -- 共有400行记录+-------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | De......

forluv83
2016/01/25
68
0
使用python脚本实现mysql误操作的flush back

1.简介 在oracle数据库中,当一个误操作被提交后,我们可以通过oracle提供的闪回功能将表闪回至误操作之前的状态。在mysql中没有原生的flush back功能,DBA误操作时,传统的恢复方式是利用全...

橡皮高
2018/05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
22分钟前
0
0
高德API入门教程

项目需求 1、实现打开地图就能定位到中心显示标注点 2、点击标注显示保利可爱岛的详细信息 3、实现导航功能 <!doctype html><html><head> <meta charset="utf-8"> <meta http-......

我叫小糖主
34分钟前
6
0
聊聊Elasticsearch的MonitorService

序 本文主要研究一下Elasticsearch的MonitorService MonitorService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/MonitorService.java public class MonitorServic......

go4it
今天
3
0
二、Docker

1、Docker - The TLDR(Too Long,Don't Read,Linxu 终端工具 ) Docker是在Linux和Windows上运行的软件。它创建、管理和编排容器。该软件以开源方式开发,在Github上作为Moby开源项目的一部分。...

倪伟伟
今天
3
0
Python猫荐书系列之七:Python入门书籍有哪些?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/ArN-6mLPzPT8Zoq0Na_tsg 最近,猫哥的 Python 技术学习群里进来了几位比较特殊的同学:一...

豌豆花下猫
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部