存储结构读取不同数据库中表信息将存入临时表
来源:互联网 发布:淘宝分析数据 编辑:程序博客网 时间:2024/06/05 16:39
代码知识点:
1、字符串截取
2、sql语句拼接
3、动态sql语句
直接上代码
第一种方法:(information_schema方法)
BEGIN
declare AllTableName VARCHAR(4000);/*存储数据库名和表名的总文本信息*/
declare tablename varchar(40);/*存储解析出来的表名称*/
declare databasename varchar(30);/*存储解析出来的数据库名称*/
declare v_sql varchar(200);/*存储预编译sql语句*/
drop table if exists Mark_tabletotal;
create temporary table Mark_tabletotal( /*创建数据库的临时表,用于临时存储查询出的信息*/
table_name varchar(40),
table_count int
);
set AllTableName ='spprogram.animal,spprogram.books,gmp2.adminuser,'; /*数据库和数据库表名的文本,数据库和表之间用.隔开,两个字段之间用,隔开*/
while LOCATE(',',AllTableName)>0 do
set databasename = substring(AllTableName,1,LOCATE('.',AllTableName)-1); /*截取数据库名称*/
set AllTableName = SUBSTRING(AllTableName, LOCATE('.',AllTableName) + 1);/*截取完数据库名称,将截取出的数据库名称从总字段中删除包括用于和表分隔得.也同时删除*/
set tablename = substring(AllTableName,1, LOCATE(',',AllTableName)-1);/*截取表名称*/
set AllTableName = SUBSTRING(AllTableName, LOCATE(',',AllTableName) + 1);/*截取表名称,将截取出的数据库名称从总字段中删除包括用于字段分隔的,也同时删除*/
/*select * from information_schema.tables where table_schema= '数据库名' and table_name = '名';*/
/*上面的语句用于查询指定数据库下指定表的信息*/
/*动态sql拼接*/
set v_sql = concat('select table_rows into @table_count from information_schema.tables where table_schema= ''',databasename,''' and table_name = ''',tablename,''';');
set @sql =v_sql;
/*将拼接好的sql语句赋值给一个变量,******很重要很重要,不可没有*/
prepare stmt from @sql; /*预处理需要执行的sql,其中stmt是赋予的名称*/
execute stmt; /*执行stmt预处理的语句*/
set tablename = concat(databasename,'.',tablename);
insert into Mark_tabletotal values(tablename,@table_count); /*将查询出来的表信息和表名称,插入到临时表中*/
end while;
deallocate prepare stmt; /*释放掉预处理*/
select * from Mark_tabletotal; /*查询出临时表中的信息*/
drop table Mark_tabletotal; /*删除掉临时表*/
END
第二种方法:(数据库名称.表名,直接锁定要查询的表)
BEGIN
declare AllTableName VARCHAR(4000);/*存储数据库名和表名的总文本信息*/
declare tablename varchar(40);/*存储解析出来的表名称*//*存储解析出来的数据库名称*/
declare v_sql varchar(200);/*存储预编译sql语句*/
drop table if exists Mark_tabletotal;
create temporary table Mark_tabletotal( /*创建数据库的临时表,用于临时存储查询出的信息*/
table_name varchar(40),
table_count int
);
set AllTableName ='spprogram.animal,spprogram.books,gmp2.adminuser,'; /*数据库和数据库表名的文本,数据库和表之间用.隔开,两个字段之间用,隔开*/
while LOCATE(',',AllTableName)>0 do
/*substring(str,pos,length) str代表字符串,pos代表从什么地方开始截取,length代表截取长度
locate(substr,str) 返回substr在字符串str中第一次出现的点
*/
set tablename = substring(AllTableName,1, LOCATE(',',AllTableName)-1);/*截取要查询的书库局名称和表名称*/
set AllTableName = SUBSTRING(AllTableName, LOCATE(',',AllTableName) + 1);/*将截取出的数据库名称和表名称从总字段中删除包括用于字段分隔的,也同时删除*/
/*要理解字符串截取的规则
第一次截取出来的tablename是'spprogram.animal' 第一次经过截取的总字符串是'spprogram.books,gmp2.adminuser,'
第二次截取出来的tablename是'spprogram.books' 第二次经过截取的总字符串
是'gmp2.adminuser,'
*/
/*动态sql拼接*/
set v_sql = concat('select count(*) into @table_count from ',tablename,';');
set @sql =v_sql;
/*将拼接好的sql语句赋值给一个变量,******很重要很重要,不可没有*/
prepare stmt from @sql; /*预处理需要执行的sql,其中stmt是赋予的名称*/
execute stmt; /*执行stmt预处理的语句*/
insert into Mark_tabletotal values(tablename,@table_count); /*将查询出来的表信息和表名称,插入到临时表中*/
end while;
deallocate prepare stmt; /*释放掉预处理*/
select * from Mark_tabletotal; /*查询出临时表中的信息*/
drop table Mark_tabletotal; /*删除掉临时表*/
END
- 存储结构读取不同数据库中表信息将存入临时表
- MYSQL存储过程在XML文本信息中读取数据节点信息,将节点中的数据存入数据库
- 读取数据库中表和列的信息
- 得到sqlserver数据库中表结构信息
- 将union查询结果存入临时表
- 将图片存入数据库及读取
- SQLServer导出数据库中表结构信息的方法
- 数据库中表的读取
- sql 将逗号分割的字符串存入临时表
- Oracle将查询结果存入临时表的写法
- 通过IntentService读取收获地址省市县信息存入数据库
- 数据库存储-读取资源信息
- 利用poi将excel表中数据读取存入mysql数据库(数据量比较大)
- 读取xml文件,并将其存入数据库中
- C#将图片存入SQLServer数据库并读取
- 使用python将得到whois信息,存入数据库(分片法)
- 二进制存入读取数据库
- .将图片存入数据库
- MATLAB定义随机矩阵
- ajax的模板
- MyEclipse/Eclipse 开发常用快捷键
- 干货!前端开发指南20+
- 日期格式化{0:yyyy-MM-dd HH:mm:ss.fff}和{0:yyyy-MM-dd hh:mm:ss.fff}的区别
- 存储结构读取不同数据库中表信息将存入临时表
- flask Flash消息
- 快速排序及其优化
- SVM-Light在windows下的使用
- Python学习笔记 day02 基本数据类型
- 正确修改MAC用户名
- 阿里云 CentOS7.2 配置SSH登录 新手教程
- Glide加载圆形,圆角图片
- android 音频子系统框架(一)