近期由于程序的异常,导致数据库中创建了大量的表(约4000个),纠结的是表中的数据还都是有用的。

需要合并到一个表中,首先想到的就是使用存储过程来处理,但由于表名都是动态生成的,需要解决在存储过程中处理以表名作为参数的问题。

1、用set或者declare语句将表名定义为变量,在sql中的表名位置使用变量,经验证行不通,数据库会把变量名当作表名。

2、要进行的操作直接用concat拼接出来,然后直接执行这个sql。可如何在存储过程中执行拼接的sql,经查找可使用PREPARE 来完成。

下面是示例代码:

将表test_1~test_100中的数据都插入到test表中。

a. 数据插入使用了insert into ... select ..from ... on duplicate key update xxx=$$; (“无则插入,有则更新”)

b. 对表test_x进行操作之前,断定了表是否存在。在MySQL中库的相关系统都存放在库information_schema中,与表相关的信息存放  在表TABLES中。

 1 BEGIN
 2         DECLARE total INT DEFAULT 100;
 3
 4         WHILE total >0 DO
 5             # 先判断表test_x是否存在
 6             SELECT count(TABLE_NAME) INTO @tbCount FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME=CONCAT('test_',total);
 7             IF @tbCount >0 THEN
 8                 SET @InsertData = CONCAT('insert into test (id,name) select t2.id,t2.name from test_',total,' t2 on duplicate key update name=t2.name');
 9                 PREPARE stmt FROM @InsertData;
10                 EXECUTE stmt;
11                 SET @dropTable = CONCAT('DROP TABLE test_',total,';');
12                 PREPARE stmt1 FROM @dropTable;
13                 EXECUTE stmt1;
14             END IF;
15
16             SET total = total-1;
17
18         END WHILE;
19
20 END;

转载于:https://www.cnblogs.com/xpyan/p/3975597.html

Mysql中表名作为参数的问题相关推荐

  1. Mysql一些重要配置参数的学习与整理(一)

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Mysql一些重要配置参数的学习与整理(一) 最近一直在进行mysql的学习,主要是学习mysql的一些配置参数,了 ...

  2. MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改MySQL的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  3. Python的函数名作为参数传入调用以及map、reduce、filter

    零.python的lambda函数: 1 #lambda function 2 func = lambda x : x+1 3 #这里是一个匿名函数,x是参数,x+1是对参数的操作 4 func(1) ...

  4. MySQL线程共享内存参数

    MySQL线程共享内存参数 全局共享内存主要是 MySQL Instance(mysqld进程)以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息,如存储查询缓存的 Query Cache,缓存连 ...

  5. ajax参数中字符串最大长度_6.7 C++数组名作函数参数 | 求3*4矩阵中最大的值

    C++用数组元素作函数实参 C++中实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素可以作为函数的实参,与用变量作实参一样,将数组元素的值传送给形参变量. C++也可以用数组名作函数参 ...

  6. 2.2.1 MySQL基本功能与参数文件管理

    MySQL基本功能与参数文件管理 MySQL 数据库文件分类介绍 redolog undolog binlog(复制时还有 relaylog) errorlog querylog slowlog da ...

  7. 动态游标(例如表名作为参数)以及动态SQL分析

    表名作为参数的动态游标 DECLAREv_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP';--l_rec SYS_REFCURSOR;TYPE ...

  8. MySQL中表连接方式

    为了能够很好理解MySQL中表连接方式,以如下两个表作为例子演示: Table1:t1 id name 1 张三 2 李四 4 王五 Table2:t2 id age 1 18 2 20 3 19 1 ...

  9. c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)

    c语言自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数) 程序流程图: 代码: #include<stdio.h> char strupr(char ch[ ...

最新文章

  1. 有哪些相见恨晚的学习算法的方法和技巧?学到了学到了!
  2. matlab画CDF曲线
  3. 特斯拉化身电影院,马斯克:车自动开,你来看电影
  4. IPv6中的特殊地址
  5. clickhouse mysql引擎_玩数据的,有必要搞搞这个大数据框架——ClickHouse
  6. 【推荐】用这些 App 提高你的睡眠质量
  7. python 抢购口罩_Python 京东口罩监控+抢购
  8. poj doubles_余数运算符在Java中用于Doubles
  9. python中如何标识语句块_如何用python在一个块中编写多个try语句?
  10. 服务器为什么进入pe找不到硬盘,进PE系统找不到硬盘怎么办?看电脑大神怎么做的!...
  11. python多线程 _thread没有上lock时程序提前给你把可执行的都执行,不按代码编写顺序执行
  12. Java程序员春招三面蚂蚁金服,1-7中HashMap死循环分析
  13. Siamese Network(孪生网络)
  14. Paragon Camptune X for Mac(Mac磁盘分区工具) V10.13.433免费版
  15. [日推荐]『小恩故事』育儿助手!
  16. ubuntu 下,用户,文件夹,用户组 之理解
  17. 腾讯云实时音视频( TRTC)通话质量监控仪表盘
  18. 【笔记】PCIe TLP Header 中的常见 Feild 及其释义
  19. python 收银系统_实现全栈收银系统(Node+Vue)(一)
  20. 地球系统模式(CESM)

热门文章

  1. 企业网站建设量身定做的三项基本要素
  2. 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)
  3. java 涂鸦_java 涂鸦画板
  4. 服务器如何开启远程控制,远程控制命令设置方法介绍
  5. 安装python38_debian8安装python3.7
  6. 完整计算机组成系统,计算机组成原理与完整系统结构.doc
  7. vim 查找并手动替换(笔记)
  8. 通过apt自动生成建造者模式单线程版代码(一)
  9. 开发日记-20190825 关键词 管道和FIFO
  10. go语言笔记——map map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序...